From 667af128d0adfeee2aa4748ab58411c91bc4905f Mon Sep 17 00:00:00 2001 From: mcentner Date: Tue, 26 Jan 2010 16:27:04 +0000 Subject: git-svn-id: https://joinup.ec.europa.eu/svn/mocca/branches/mocca-1.2.11-sha2@600 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- .../bkucommon/src/main/java/META-INF/MANIFEST.MF | 6 - .../bku/accesscontrol/config/AccessControl.java | 79 -- .../gv/egiz/bku/accesscontrol/config/Action.java | 114 -- .../at/gv/egiz/bku/accesscontrol/config/Chain.java | 115 -- .../gv/egiz/bku/accesscontrol/config/Chains.java | 86 -- .../gv/egiz/bku/accesscontrol/config/Command.java | 116 -- .../bku/accesscontrol/config/ObjectFactory.java | 135 -- .../at/gv/egiz/bku/accesscontrol/config/Param.java | 109 -- .../at/gv/egiz/bku/accesscontrol/config/Rule.java | 285 ----- .../at/gv/egiz/bku/accesscontrol/config/Rules.java | 86 -- .../egiz/bku/accesscontroller/AccessChecker.java | 23 - .../bku/accesscontroller/AccessCheckerContext.java | 43 - .../accesscontroller/AccessControllerFactory.java | 153 --- .../at/gv/egiz/bku/accesscontroller/Action.java | 35 - .../bku/accesscontroller/AuthenticationClass.java | 37 - .../accesscontroller/AuthenticationClassifier.java | 110 -- .../gv/egiz/bku/accesscontroller/ChainChecker.java | 91 -- .../gv/egiz/bku/accesscontroller/ChainResult.java | 49 - .../bku/accesscontroller/CommandParamChecker.java | 68 -- .../bku/accesscontroller/InfoboxParamChecker.java | 74 -- .../gv/egiz/bku/accesscontroller/RuleChecker.java | 203 --- .../gv/egiz/bku/accesscontroller/RuleResult.java | 32 - .../accesscontroller/SecurityManagerFacade.java | 118 -- .../gv/egiz/bku/accesscontroller/UserAction.java | 36 - .../egiz/bku/binding/AbstractBindingProcessor.java | 89 -- .../at/gv/egiz/bku/binding/BindingProcessor.java | 78 -- .../egiz/bku/binding/BindingProcessorManager.java | 107 -- .../bku/binding/BindingProcessorManagerImpl.java | 330 ----- .../main/java/at/gv/egiz/bku/binding/DataUrl.java | 111 -- .../at/gv/egiz/bku/binding/DataUrlConnection.java | 82 -- .../gv/egiz/bku/binding/DataUrlConnectionImpl.java | 539 -------- .../gv/egiz/bku/binding/DataUrlConnectionSPI.java | 64 - .../at/gv/egiz/bku/binding/DataUrlResponse.java | 98 -- .../java/at/gv/egiz/bku/binding/ExpiryRemover.java | 67 - .../gv/egiz/bku/binding/FixedFormParameters.java | 28 - .../java/at/gv/egiz/bku/binding/FormParameter.java | 39 - .../at/gv/egiz/bku/binding/FormParameterImpl.java | 93 -- .../at/gv/egiz/bku/binding/FormParameterStore.java | 146 --- .../gv/egiz/bku/binding/HTTPBindingProcessor.java | 844 ------------- .../main/java/at/gv/egiz/bku/binding/HttpUtil.java | 79 -- .../src/main/java/at/gv/egiz/bku/binding/Id.java | 31 - .../java/at/gv/egiz/bku/binding/IdFactory.java | 106 -- .../main/java/at/gv/egiz/bku/binding/IdImpl.java | 83 -- .../java/at/gv/egiz/bku/binding/InputDecoder.java | 41 - .../gv/egiz/bku/binding/InputDecoderFactory.java | 89 -- .../bku/binding/MultiPartFormDataInputDecoder.java | 133 -- .../at/gv/egiz/bku/binding/ProcessingContext.java | 59 - .../at/gv/egiz/bku/binding/RemovalStrategy.java | 26 - .../gv/egiz/bku/binding/SLCommandInvokerImpl.java | 95 -- .../egiz/bku/binding/XWWWFormUrlInputDecoder.java | 58 - .../egiz/bku/binding/XWWWFormUrlInputIterator.java | 386 ------ .../binding/multipart/InputStreamPartSource.java | 61 - .../egiz/bku/binding/multipart/SLResultPart.java | 71 -- .../java/at/gv/egiz/bku/conf/CertValidator.java | 13 - .../at/gv/egiz/bku/conf/CertValidatorImpl.java | 107 -- .../java/at/gv/egiz/bku/conf/Configuration.java | 100 -- .../java/at/gv/egiz/bku/conf/Configurator.java | 467 ------- .../java/at/gv/egiz/bku/conf/IAIKCommonsLog.java | 144 --- .../at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java | 59 - .../bku/slcommands/AccessControlInvocation.java | 21 - .../bku/slcommands/CreateXMLSignatureCommand.java | 25 - .../bku/slcommands/CreateXMLSignatureResult.java | 20 - .../at/gv/egiz/bku/slcommands/ErrorResult.java | 20 - .../gv/egiz/bku/slcommands/GetStatusCommand.java | 26 - .../at/gv/egiz/bku/slcommands/GetStatusResult.java | 26 - .../gv/egiz/bku/slcommands/InfoboxReadCommand.java | 28 - .../gv/egiz/bku/slcommands/InfoboxReadResult.java | 20 - .../egiz/bku/slcommands/InfoboxUpdateCommand.java | 23 - .../egiz/bku/slcommands/InfoboxUpdateResult.java | 21 - .../gv/egiz/bku/slcommands/InvocationStrategy.java | 20 - .../egiz/bku/slcommands/NullOperationCommand.java | 20 - .../egiz/bku/slcommands/NullOperationResult.java | 20 - .../java/at/gv/egiz/bku/slcommands/SLCommand.java | 31 - .../gv/egiz/bku/slcommands/SLCommandContext.java | 55 - .../gv/egiz/bku/slcommands/SLCommandFactory.java | 395 ------ .../gv/egiz/bku/slcommands/SLCommandInvoker.java | 46 - .../egiz/bku/slcommands/SLMarshallerFactory.java | 172 --- .../java/at/gv/egiz/bku/slcommands/SLResult.java | 45 - .../at/gv/egiz/bku/slcommands/SLSourceContext.java | 64 - .../at/gv/egiz/bku/slcommands/SLTargetContext.java | 51 - .../slcommands/impl/AbstractAssocArrayInfobox.java | 299 ----- .../slcommands/impl/AbstractBinaryFileInfobox.java | 66 - .../impl/AbstractInfoboxCommandImpl.java | 83 -- .../bku/slcommands/impl/AbstractInfoboxImpl.java | 45 - .../bku/slcommands/impl/AssocArrayInfobox.java | 27 - .../bku/slcommands/impl/BinaryFileInfobox.java | 27 - .../slcommands/impl/CardChannelInfoboxImpl.java | 235 ---- .../slcommands/impl/CertificatesInfoboxImpl.java | 112 -- .../impl/CreateXMLSignatureCommandImpl.java | 219 ---- .../impl/CreateXMLSignatureResultImpl.java | 107 -- .../slcommands/impl/DataObjectHashDataInput.java | 59 - .../egiz/bku/slcommands/impl/ErrorResultImpl.java | 67 - .../bku/slcommands/impl/GetStatusCommandImpl.java | 77 -- .../bku/slcommands/impl/GetStatusResultImpl.java | 52 - .../slcommands/impl/IdentityLinkInfoboxImpl.java | 290 ----- .../at/gv/egiz/bku/slcommands/impl/Infobox.java | 70 -- .../egiz/bku/slcommands/impl/InfoboxFactory.java | 90 -- .../slcommands/impl/InfoboxReadCommandImpl.java | 96 -- .../slcommands/impl/InfoboxReadResultFileImpl.java | 160 --- .../bku/slcommands/impl/InfoboxReadResultImpl.java | 64 - .../slcommands/impl/InfoboxUpdateCommandImpl.java | 74 -- .../slcommands/impl/InfoboxUpdateResultImpl.java | 43 - .../slcommands/impl/NullOperationCommandImpl.java | 43 - .../slcommands/impl/NullOperationResultImpl.java | 48 - .../gv/egiz/bku/slcommands/impl/SLCommandImpl.java | 81 -- .../gv/egiz/bku/slcommands/impl/SLResultImpl.java | 297 ----- .../at/gv/egiz/bku/slcommands/impl/STALHelper.java | 242 ---- .../impl/SVPersonendatenInfoboxImpl.java | 323 ----- .../impl/xsect/AlgorithmMethodFactory.java | 79 -- .../impl/xsect/AlgorithmMethodFactoryImpl.java | 172 --- .../impl/xsect/ByteArrayDereferencer.java | 65 - .../egiz/bku/slcommands/impl/xsect/DataObject.java | 1289 -------------------- .../bku/slcommands/impl/xsect/IdValueFactory.java | 37 - .../slcommands/impl/xsect/IdValueFactoryImpl.java | 127 -- .../slcommands/impl/xsect/LocRefDereferencer.java | 112 -- .../bku/slcommands/impl/xsect/STALPrivateKey.java | 128 -- .../bku/slcommands/impl/xsect/STALProvider.java | 71 -- .../bku/slcommands/impl/xsect/STALSignature.java | 184 --- .../impl/xsect/STALSignatureException.java | 92 -- .../egiz/bku/slcommands/impl/xsect/Signature.java | 995 --------------- .../slcommands/impl/xsect/SignatureContext.java | 129 -- .../slcommands/impl/xsect/SignatureLocation.java | 235 ---- .../impl/xsect/SimpleDOMErrorHandler.java | 98 -- .../impl/xsect/URIDereferncerAdapter.java | 103 -- .../bku/slcommands/impl/xsect/XSECTReference.java | 112 -- .../bku/slcommands/impl/xsect/XSECTTransforms.java | 124 -- .../egiz/bku/slexceptions/SLBindingException.java | 31 - .../egiz/bku/slexceptions/SLCanceledException.java | 26 - .../egiz/bku/slexceptions/SLCommandException.java | 30 - .../at/gv/egiz/bku/slexceptions/SLException.java | 88 -- .../egiz/bku/slexceptions/SLExceptionMessages.java | 56 - .../egiz/bku/slexceptions/SLRequestException.java | 30 - .../egiz/bku/slexceptions/SLRuntimeException.java | 37 - .../egiz/bku/slexceptions/SLVersionException.java | 28 - .../egiz/bku/slexceptions/SLViewerException.java | 28 - .../at/gv/egiz/bku/viewer/ResourceFontLoader.java | 61 - .../at/gv/egiz/bku/viewer/ValidationException.java | 38 - .../main/java/at/gv/egiz/bku/viewer/Validator.java | 25 - .../at/gv/egiz/bku/viewer/ValidatorFactory.java | 178 --- 139 files changed, 16479 deletions(-) delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java delete mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java (limited to 'mocca-1.2.11/bkucommon/src/main/java') diff --git a/mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 46e7dd84..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,6 +0,0 @@ -Manifest-Version: 1.0 -Archiver-Version: Plexus Archiver -Created-By: Apache Maven -Built-By: clemens -Build-Jdk: 1.6.0_10 -SignatureLayout: 1.0 diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java deleted file mode 100644 index a03505f6..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java +++ /dev/null @@ -1,79 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontrol.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <sequence>
- *         <element ref="{}Chains"/>
- *       </sequence>
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "chains" -}) -@XmlRootElement(name = "AccessControl") -public class AccessControl { - - @XmlElement(name = "Chains", required = true) - protected Chains chains; - - /** - * Gets the value of the chains property. - * - * @return - * possible object is - * {@link Chains } - * - */ - public Chains getChains() { - return chains; - } - - /** - * Sets the value of the chains property. - * - * @param value - * allowed object is - * {@link Chains } - * - */ - public void setChains(Chains value) { - this.chains = value; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java deleted file mode 100644 index 9b15f0fd..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java +++ /dev/null @@ -1,114 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontrol.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <choice>
- *         <element name="ChainRef" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *         <element name="RuleAction">
- *           <simpleType>
- *             <restriction base="{http://www.w3.org/2001/XMLSchema}string">
- *               <enumeration value="allow"/>
- *               <enumeration value="deny"/>
- *             </restriction>
- *           </simpleType>
- *         </element>
- *       </choice>
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "chainRef", - "ruleAction" -}) -@XmlRootElement(name = "Action") -public class Action { - - @XmlElement(name = "ChainRef") - protected String chainRef; - @XmlElement(name = "RuleAction") - protected String ruleAction; - - /** - * Gets the value of the chainRef property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getChainRef() { - return chainRef; - } - - /** - * Sets the value of the chainRef property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setChainRef(String value) { - this.chainRef = value; - } - - /** - * Gets the value of the ruleAction property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getRuleAction() { - return ruleAction; - } - - /** - * Sets the value of the ruleAction property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setRuleAction(String value) { - this.ruleAction = value; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java deleted file mode 100644 index 92975e48..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java +++ /dev/null @@ -1,115 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package at.gv.egiz.bku.accesscontrol.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlID; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <sequence>
- *         <element ref="{}Rules" minOccurs="0"/>
- *       </sequence>
- *       <attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "rules" -}) -@XmlRootElement(name = "Chain") -public class Chain { - - @XmlElement(name = "Rules") - protected Rules rules; - @XmlAttribute(name = "Id") - @XmlJavaTypeAdapter(CollapsedStringAdapter.class) - @XmlID - @XmlSchemaType(name = "ID") - protected String id; - - /** - * Gets the value of the rules property. - * - * @return - * possible object is - * {@link Rules } - * - */ - public Rules getRules() { - return rules; - } - - /** - * Sets the value of the rules property. - * - * @param value - * allowed object is - * {@link Rules } - * - */ - public void setRules(Rules value) { - this.rules = value; - } - - /** - * Gets the value of the id property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getId() { - return id; - } - - /** - * Sets the value of the id property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setId(String value) { - this.id = value; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java deleted file mode 100644 index ea8c36bd..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java +++ /dev/null @@ -1,86 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontrol.config; - -import java.util.ArrayList; -import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <sequence>
- *         <element ref="{}Chain" maxOccurs="unbounded"/>
- *       </sequence>
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "chain" -}) -@XmlRootElement(name = "Chains") -public class Chains { - - @XmlElement(name = "Chain", required = true) - protected List chain; - - /** - * Gets the value of the chain property. - * - *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the chain property. - * - *

- * For example, to add a new item, do as follows: - *

-     *    getChain().add(newItem);
-     * 
- * - * - *

- * Objects of the following type(s) are allowed in the list - * {@link Chain } - * - * - */ - public List getChain() { - if (chain == null) { - chain = new ArrayList(); - } - return this.chain; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java deleted file mode 100644 index a2a9ebb4..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java +++ /dev/null @@ -1,116 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontrol.config; - -import java.util.ArrayList; -import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <sequence>
- *         <element ref="{}Param" maxOccurs="unbounded" minOccurs="0"/>
- *       </sequence>
- *       <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "param" -}) -@XmlRootElement(name = "Command") -public class Command { - - @XmlElement(name = "Param") - protected List param; - @XmlAttribute(name = "Name", required = true) - @XmlSchemaType(name = "anySimpleType") - protected String name; - - /** - * Gets the value of the param property. - * - *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the param property. - * - *

- * For example, to add a new item, do as follows: - *

-     *    getParam().add(newItem);
-     * 
- * - * - *

- * Objects of the following type(s) are allowed in the list - * {@link Param } - * - * - */ - public List getParam() { - if (param == null) { - param = new ArrayList(); - } - return this.param; - } - - /** - * Gets the value of the name property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getName() { - return name; - } - - /** - * Sets the value of the name property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setName(String value) { - this.name = value; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java deleted file mode 100644 index 2c6e2187..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java +++ /dev/null @@ -1,135 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package at.gv.egiz.bku.accesscontrol.config; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.annotation.XmlElementDecl; -import javax.xml.bind.annotation.XmlRegistry; -import javax.xml.namespace.QName; - - -/** - * This object contains factory methods for each - * Java content interface and Java element interface - * generated in the at.gv.egiz.bku.accesscontrol.config package. - *

An ObjectFactory allows you to programatically - * construct new instances of the Java representation - * for XML content. The Java representation of XML - * content can consist of schema derived interfaces - * and classes representing the binding of schema - * type definitions, element declarations and model - * groups. Factory methods for each of these are - * provided in this class. - * - */ -@XmlRegistry -public class ObjectFactory { - - private final static QName _UserInteraction_QNAME = new QName("", "UserInteraction"); - private final static QName _AuthClass_QNAME = new QName("", "AuthClass"); - - /** - * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egiz.bku.accesscontrol.config - * - */ - public ObjectFactory() { - } - - /** - * Create an instance of {@link Param } - * - */ - public Param createParam() { - return new Param(); - } - - /** - * Create an instance of {@link AccessControl } - * - */ - public AccessControl createAccessControl() { - return new AccessControl(); - } - - /** - * Create an instance of {@link Command } - * - */ - public Command createCommand() { - return new Command(); - } - - /** - * Create an instance of {@link Rules } - * - */ - public Rules createRules() { - return new Rules(); - } - - /** - * Create an instance of {@link Action } - * - */ - public Action createAction() { - return new Action(); - } - - /** - * Create an instance of {@link Chains } - * - */ - public Chains createChains() { - return new Chains(); - } - - /** - * Create an instance of {@link Chain } - * - */ - public Chain createChain() { - return new Chain(); - } - - /** - * Create an instance of {@link Rule } - * - */ - public Rule createRule() { - return new Rule(); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} - * - */ - @XmlElementDecl(namespace = "", name = "UserInteraction") - public JAXBElement createUserInteraction(String value) { - return new JAXBElement(_UserInteraction_QNAME, String.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} - * - */ - @XmlElementDecl(namespace = "", name = "AuthClass") - public JAXBElement createAuthClass(String value) { - return new JAXBElement(_AuthClass_QNAME, String.class, null, value); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java deleted file mode 100644 index daffa98d..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java +++ /dev/null @@ -1,109 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontrol.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.XmlValue; -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <simpleContent>
- *     <extension base="<http://www.w3.org/2001/XMLSchema>string">
- *       <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" />
- *     </extension>
- *   </simpleContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "value" -}) -@XmlRootElement(name = "Param") -public class Param { - - @XmlValue - protected String value; - @XmlAttribute(name = "Name", required = true) - @XmlJavaTypeAdapter(CollapsedStringAdapter.class) - @XmlSchemaType(name = "NCName") - protected String name; - - /** - * Gets the value of the value property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getValue() { - return value; - } - - /** - * Sets the value of the value property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setValue(String value) { - this.value = value; - } - - /** - * Gets the value of the name property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getName() { - return name; - } - - /** - * Sets the value of the name property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setName(String value) { - this.name = value; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java deleted file mode 100644 index 2ad1e660..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java +++ /dev/null @@ -1,285 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -package at.gv.egiz.bku.accesscontrol.config; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAttribute; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlID; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlSchemaType; -import javax.xml.bind.annotation.XmlType; -import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; -import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <sequence>
- *         <element ref="{}AuthClass"/>
- *         <choice minOccurs="0">
- *           <element name="DomainName" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *           <element name="IPv4Address" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *           <element name="URL" type="{http://www.w3.org/2001/XMLSchema}string"/>
- *         </choice>
- *         <element ref="{}Command" minOccurs="0"/>
- *         <element ref="{}Action"/>
- *         <element ref="{}UserInteraction"/>
- *       </sequence>
- *       <attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "authClass", - "domainName", - "iPv4Address", - "url", - "command", - "action", - "userInteraction" -}) -@XmlRootElement(name = "Rule") -public class Rule { - - @XmlElement(name = "AuthClass", required = true) - protected String authClass; - @XmlElement(name = "DomainName") - protected String domainName; - @XmlElement(name = "IPv4Address") - protected String iPv4Address; - @XmlElement(name = "URL") - protected String url; - @XmlElement(name = "Command") - protected Command command; - @XmlElement(name = "Action", required = true) - protected Action action; - @XmlElement(name = "UserInteraction", required = true) - protected String userInteraction; - @XmlAttribute(name = "Id") - @XmlJavaTypeAdapter(CollapsedStringAdapter.class) - @XmlID - @XmlSchemaType(name = "ID") - protected String id; - - /** - * Gets the value of the authClass property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getAuthClass() { - return authClass; - } - - /** - * Sets the value of the authClass property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setAuthClass(String value) { - this.authClass = value; - } - - /** - * Gets the value of the domainName property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDomainName() { - return domainName; - } - - /** - * Sets the value of the domainName property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDomainName(String value) { - this.domainName = value; - } - - /** - * Gets the value of the iPv4Address property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getIPv4Address() { - return iPv4Address; - } - - /** - * Sets the value of the iPv4Address property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setIPv4Address(String value) { - this.iPv4Address = value; - } - - /** - * Gets the value of the url property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getURL() { - return url; - } - - /** - * Sets the value of the url property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setURL(String value) { - this.url = value; - } - - /** - * Gets the value of the command property. - * - * @return - * possible object is - * {@link Command } - * - */ - public Command getCommand() { - return command; - } - - /** - * Sets the value of the command property. - * - * @param value - * allowed object is - * {@link Command } - * - */ - public void setCommand(Command value) { - this.command = value; - } - - /** - * Gets the value of the action property. - * - * @return - * possible object is - * {@link Action } - * - */ - public Action getAction() { - return action; - } - - /** - * Sets the value of the action property. - * - * @param value - * allowed object is - * {@link Action } - * - */ - public void setAction(Action value) { - this.action = value; - } - - /** - * Gets the value of the userInteraction property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getUserInteraction() { - return userInteraction; - } - - /** - * Sets the value of the userInteraction property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setUserInteraction(String value) { - this.userInteraction = value; - } - - /** - * Gets the value of the id property. - * - * @return - * possible object is - * {@link String } - * - */ - public String getId() { - return id; - } - - /** - * Sets the value of the id property. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setId(String value) { - this.id = value; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java deleted file mode 100644 index 16150f0c..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java +++ /dev/null @@ -1,86 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontrol.config; - -import java.util.ArrayList; -import java.util.List; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

Java class for anonymous complex type. - * - *

The following schema fragment specifies the expected content contained within this class. - * - *

- * <complexType>
- *   <complexContent>
- *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
- *       <sequence>
- *         <element ref="{}Rule" maxOccurs="unbounded"/>
- *       </sequence>
- *     </restriction>
- *   </complexContent>
- * </complexType>
- * 
- * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "", propOrder = { - "rule" -}) -@XmlRootElement(name = "Rules") -public class Rules { - - @XmlElement(name = "Rule", required = true) - protected List rule; - - /** - * Gets the value of the rule property. - * - *

- * This accessor method returns a reference to the live list, - * not a snapshot. Therefore any modification you make to the - * returned list will be present inside the JAXB object. - * This is why there is not a set method for the rule property. - * - *

- * For example, to add a new item, do as follows: - *

-     *    getRule().add(newItem);
-     * 
- * - * - *

- * Objects of the following type(s) are allowed in the list - * {@link Rule } - * - * - */ - public List getRule() { - if (rule == null) { - rule = new ArrayList(); - } - return this.rule; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java deleted file mode 100644 index d930c74e..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java +++ /dev/null @@ -1,23 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import at.gv.egiz.bku.slexceptions.SLException; - -public interface AccessChecker { - public ChainResult check(AccessCheckerContext checkCtx) throws SLException; -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java deleted file mode 100644 index 60935678..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java +++ /dev/null @@ -1,43 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import at.gv.egiz.bku.slcommands.SLCommand; - -public class AccessCheckerContext { - private SLCommand command; - private AuthenticationClass authenticationClass; - private String peerUrl; - - public AccessCheckerContext(SLCommand cmd, AuthenticationClass ac, String url) { - this.command = cmd; - this.authenticationClass = ac; - this.peerUrl = url; - } - - public SLCommand getCommand() { - return command; - } - - public AuthenticationClass getAuthenticationClass() { - return authenticationClass; - } - - public String getPeerUrl() { - return peerUrl; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java deleted file mode 100644 index 19fec084..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java +++ /dev/null @@ -1,153 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import java.io.InputStream; -import java.util.Hashtable; -import java.util.List; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.accesscontrol.config.AccessControl; -import at.gv.egiz.bku.accesscontrol.config.Chain; -import at.gv.egiz.bku.accesscontrol.config.Command; -import at.gv.egiz.bku.accesscontrol.config.ObjectFactory; -import at.gv.egiz.bku.accesscontrol.config.Param; -import at.gv.egiz.bku.accesscontrol.config.Rule; -import at.gv.egiz.bku.accesscontroller.RuleChecker.PEER_TYPE; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -public class AccessControllerFactory { - - private static AccessControllerFactory instance = new AccessControllerFactory(); - private static Log log = LogFactory.getLog(AccessControllerFactory.class); - private static JAXBContext jaxbContext; - public static String INPUT_CHAIN = "InputChain"; - public static String OUTPUT_CHAIN = "OutputChain"; - - static { - try { - jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage() - .getName()); - } catch (JAXBException e) { - log.fatal("Cannot init jaxbContext", e); - } - } - - private Hashtable chainTable = new Hashtable(); - - private AccessControllerFactory() { - } - - public static AccessControllerFactory getInstance() { - return instance; - } - - /** - * - * @param id - * @return null if there is no chain with this id. - */ - public ChainChecker getChainChecker(String id) { - return chainTable.get(id); - } - - public ChainChecker createChainChecker(String id, boolean register) { - ChainChecker cc = new ChainChecker(id); - if (register) { - chainTable.put(id, cc); - } - return cc; - } - - public void registerChainChecker(ChainChecker cc) { - chainTable.put(cc.getId(), cc); - } - - public CommandParamChecker createParamChecker(String cmd) { - if ((cmd != null) && (cmd.startsWith("Infobox"))) { - return new InfoboxParamChecker(); - } else { - return null; - } - } - - public RuleChecker createRuleChecker(Rule rule) { - RuleChecker rc; - rc = new RuleChecker(rule.getId()); - Command cmd = rule.getCommand(); - if (cmd != null) { - rc.setCommandName(cmd.getName()); - for (Param p : cmd.getParam()) { - rc.addParameter(p.getName(), p.getValue()); - } - } - rc.setAuthenticationClass(rule.getAuthClass()); - if (rule.getIPv4Address() != null) { - rc.setPeerId(rule.getIPv4Address(), PEER_TYPE.IP); - } else if (rule.getDomainName() != null) { - rc.setPeerId(rule.getDomainName(), PEER_TYPE.HOST); - } else if (rule.getURL() != null) { - rc.setPeerId(rule.getURL(), PEER_TYPE.URL); - } - rc.setAction(rule.getAction().getRuleAction()); - rc.setChainId(rule.getAction().getChainRef()); - rc.setUserAction(rule.getUserInteraction()); - return rc; - } - - public void init(InputStream is) throws JAXBException { - chainTable.clear(); - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - AccessControl ac = (AccessControl) unmarshaller.unmarshal(is); - List chainList = ac.getChains().getChain(); - log.debug("Found " + chainList.size() + " chains in config"); - for (Chain chain : chainList) { - log.trace("Creating chain: " + chain.getId()); - ChainChecker cc = createChainChecker(chain.getId(), false); - List ruleList = chain.getRules().getRule(); - log - .debug("Found " + ruleList.size() + " rules in chain " - + chain.getId()); - for (Rule rule : ruleList) { - log.trace("Creating rule: " + rule.getId()); - cc.addRule(createRuleChecker(rule)); - } - registerChainChecker(cc); - } - validate(); - } - - private void validate() { - for (ChainChecker chain : chainTable.values()) { - for (RuleChecker rule : chain.getRules()) { - if (rule.getChainId() != null) { - log.trace("Checking reference to chain: "+rule.getChainId()); - if (getChainChecker(rule.getChainId()) == null) { - throw new SLRuntimeException("Invalid reference to unknown chain: "+rule.getChainId()); - } - } - } - } - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java deleted file mode 100644 index f3d15ad6..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java +++ /dev/null @@ -1,35 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -public enum Action { - ALLOW("allow"), DENY("deny"); - private String name; - - Action(String name) { - this.name = name; - } - - public static Action fromString(String s) { - for (Action ac : values()) { - if (ac.name.equals(s)) { - return ac; - } - } - return null; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java deleted file mode 100644 index 3c442a6d..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -public enum AuthenticationClass { - ANONYMOUS("anonymous"), PSEUDO_ANONYMOUS("pseudoanonymous"), CERTIFIED( - "certified"), CERTIFIED_GOV_AGENCY("certifiedGovAgency"); - - private String name; - - AuthenticationClass(String name) { - this.name = name; - } - - public static AuthenticationClass fromString(String s) { - for (AuthenticationClass ac : values()) { - if (ac.name.equals(s)) { - return ac; - } - } - return null; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java deleted file mode 100644 index 61d3d7a5..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.accesscontroller; - -import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.ANONYMOUS; -import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.CERTIFIED; -import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.CERTIFIED_GOV_AGENCY; -import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.PSEUDO_ANONYMOUS; - -import java.net.URL; -import java.security.cert.CertificateParsingException; -import java.security.cert.X509Certificate; -import java.util.Collection; -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class AuthenticationClassifier { - private static AuthenticationClassifier instance = new AuthenticationClassifier(); - private static Log log = LogFactory.getLog(AuthenticationClassifier.class); - private final static String GOV_DOMAIN = ".gv.at"; - - private AuthenticationClassifier() { - } - - public static boolean isGovAgency(X509Certificate cert) { - String[] rdns = (cert.getSubjectX500Principal().getName()).split(","); - for (String rdn : rdns) { - if (rdn.startsWith("CN=")) { - String dns = rdn.split("=")[1]; - log.trace("Analyzing cn dn: " + dns); - if (dns.endsWith(GOV_DOMAIN)) { - return true; - } - } - } - try { - Collection> sanList = cert.getSubjectAlternativeNames(); - if (sanList != null) { - for (List san : sanList) { - log.trace("Analyzing subj. alt name: " + san); - if ((Integer) san.get(0) == 2) { - String dns = (String) san.get(1); - if (dns.endsWith(GOV_DOMAIN)) { - return true; - } - } - } - } - } catch (CertificateParsingException e) { - log.error(e); - } - if ((cert.getExtensionValue("1.2.40.0.10.1.1.1") != null) - || (cert.getExtensionValue("1.2.40.0.10.1.1.2") != null)) { - return true; - } - return false; - } - - /** - * Client Certificates are currently not supported - * - */ - protected AuthenticationClass getMyAuthenticationClass(boolean isDataUrl, - URL url, X509Certificate cert) { - if (isDataUrl) { - if (url.getProtocol().equalsIgnoreCase("https")) { - if (isGovAgency(cert)) { - return CERTIFIED_GOV_AGENCY; - } - if (cert.getExtensionValue("1.2.40.0.10.1.1.1") != null) { - return CERTIFIED_GOV_AGENCY; - } - return CERTIFIED; - } else { - return PSEUDO_ANONYMOUS; - } - } else { - return ANONYMOUS; - } - } - - /** - * - * @param isDataUrl - * @param url - * if the url's protocol is https a cert parameter must be provided. - * @param cert - * @return - */ - public static AuthenticationClass getAuthenticationClass(boolean isDataUrl, - URL url, X509Certificate cert) { - return instance.getMyAuthenticationClass(isDataUrl, url, cert); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java deleted file mode 100644 index 716f81e4..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java +++ /dev/null @@ -1,91 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import java.util.Collections; -import java.util.LinkedList; -import java.util.List; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slexceptions.SLException; - -public class ChainChecker implements AccessChecker { - private static Log log = LogFactory.getLog(ChainChecker.class); - - private String id; - private List rules = new LinkedList(); - - /** - * - * @param id must not be null - */ - public ChainChecker(String id) { - if (id == null) { - throw new NullPointerException("Id argument must not be null"); - } - this.id = id; - } - - - public String getId() { - return id; - } - - public void addRule(RuleChecker rule) { - if (rule != null) { - rules.add(rule); - } - } - - public List getRules() { - return Collections.unmodifiableList(rules); - } - - @Override - public ChainResult check(AccessCheckerContext checkCtx) throws SLException { - log.debug("Processing chain: "+id); - for (RuleChecker rule : rules) { - log.trace("Checking rule: "+rule.getId()); - RuleResult result = rule.check(checkCtx); - if (result.matchFound()) { - if (result.getDelegateChainId() != null) { - // process chain - ChainChecker cc = AccessControllerFactory.getInstance().getChainChecker(result.getDelegateChainId()); - if (cc == null) { - log.error("Cannot delegate to chain. Unknown chain id: "+result.getDelegateChainId()); - throw new SLException(4000); - } - ChainResult cr = cc.check(checkCtx); - if (cr.matchFound()) { - return cr; - } - // if chain does not contain matching rule - // cont. here. - } else { - return result; - } - } - } - log.debug("Did not find a matching rule here"); - return new ChainResult(null, null, false); - } - - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java deleted file mode 100644 index a5547cab..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java +++ /dev/null @@ -1,49 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -/** - * Result of the access controller - * - */ -public class ChainResult { - private UserAction userAction; - private Action action; - private boolean matchFound; - - public ChainResult(Action action, UserAction userAction, boolean matchFound) { - this.action = action; - this.userAction = userAction; - this.matchFound = matchFound; - } - - public Action getAction() { - return action; - } - - public UserAction getUserAction() { - return userAction; - } - - /** - * - * @return true if a matching rule has been found - */ - public boolean matchFound() { - return matchFound; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java deleted file mode 100644 index 003eb2f7..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java +++ /dev/null @@ -1,68 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import java.util.LinkedList; -import java.util.List; - -import at.gv.egiz.bku.slcommands.SLCommand; - -public abstract class CommandParamChecker { - - protected List> paramList = new LinkedList>(); - - public static class Tupel { - private T key; - private Q val; - - public Tupel(T key, Q val) { - if ((key == null) || (val == null)) { - throw new NullPointerException("Tupel key and value must not be null"); - } - this.key = key; - this.val = val; - } - - public T getKey() { - return key; - } - - public Q getVal() { - return val; - } - - @SuppressWarnings("unchecked") - public boolean equals(Object other) { - if (other instanceof Tupel) { - Tupel ot = (Tupel) other; - return (key.equals(ot.key) && val.equals(ot.val)); - } - return false; - } - - public int hashCode() { - return key.hashCode(); - } - } - - public void addParameter(String key, String value) { - paramList.add(new Tupel(key, value)); - } - - public abstract boolean checkParameter(SLCommand cmd); - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java deleted file mode 100644 index 8fa328de..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slcommands.InfoboxReadCommand; -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -public class InfoboxParamChecker extends CommandParamChecker { - private static Log log = LogFactory.getLog(InfoboxParamChecker.class); - - public final static String INFOBOX_ID = "InfoboxIdentifier"; - public final static String PERSON_ID = "PersonIdentifier"; - public final static String DERIVED = "derived"; - - @Override - public boolean checkParameter(SLCommand cmd) { - if (paramList.size() == 0) { - return true; - } - - if (cmd instanceof InfoboxReadCommand) { - InfoboxReadCommand irc = (InfoboxReadCommand) cmd; - for (Tupel param : paramList) { - if (param.getKey().equals(INFOBOX_ID)) { - if (!param.getVal().equals(irc.getInfoboxIdentifier())) { - return false; - } - } else if (param.getKey().equals(PERSON_ID)) { - if (param.getVal().equals(DERIVED)) { - if (irc.getIdentityLinkDomainId() == null) { - return false; - } - } else { - Pattern p = Pattern.compile(param.getVal()); - Matcher m = p.matcher(irc.getIdentityLinkDomainId()); - if (!m.matches()) { - return false; - } - } - - } else { - throw new SLRuntimeException("Cannot handle parameter " - + param.getKey()); - } - } - return true; - } else { - log.error("Cannot handle parameter for command: " + cmd.getName()); - throw new SLRuntimeException("Cannot handle parameters for command: " - + cmd.getName()); - } - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java deleted file mode 100644 index 1cba89ef..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java +++ /dev/null @@ -1,203 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import java.net.InetAddress; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.UnknownHostException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -public class RuleChecker implements AccessChecker { - - private static Log log = LogFactory.getLog(RuleChecker.class); - - public static enum PEER_TYPE { - HOST, IP, URL - }; - - protected String id; - protected AuthenticationClass authenticationClass; - protected String commandName; - protected Pattern commandNamePattern; - protected String peerId; - protected Pattern peerIdPattern; - protected PEER_TYPE peerType; - protected Action action; - protected UserAction userAction; - protected String chainId; - protected CommandParamChecker paramChecker; - - public RuleChecker(String id) { - if (id == null) { - throw new NullPointerException("Id argument must not be null"); - } - this.id = id; - } - - public void setAuthenticationClass(String ac) { - if (ac != null) { - AuthenticationClass tmp = AuthenticationClass.fromString(ac); - if (tmp == null) { - throw new SLRuntimeException("Unknown authentication class " + ac); - } - authenticationClass = tmp; - } - } - - public void setAction(String ac) { - if (ac != null) { - Action tmp = Action.fromString(ac); - if (tmp == null) { - throw new SLRuntimeException("Unknown action " + ac); - } - action = tmp; - } - } - - public void setUserAction(String uac) { - if (uac != null) { - UserAction tmp = UserAction.fromString(uac); - if (tmp == null) { - throw new SLRuntimeException("Unknown user action " + uac); - } - userAction = tmp; - } - } - - public void setChainId(String chainId) { - this.chainId = chainId; - } - - public void setPeerId(String peerId, PEER_TYPE type) { - this.peerType = type; - this.peerId = peerId; - peerIdPattern = Pattern.compile(peerId); - } - - public void setCommandName(String commandName) { - this.commandName = commandName; - commandNamePattern = Pattern.compile(commandName); - paramChecker = AccessControllerFactory.getInstance().createParamChecker( - commandName); - } - - /** - * Make sure to set the commandName first - * - * @param key - * @param value - */ - public void addParameter(String key, String value) { - if (paramChecker == null) { - throw new IllegalArgumentException("Cannot set parameters for command " - + commandName); - } - paramChecker.addParameter(key, value); - } - - public String getId() { - return id; - } - - protected boolean matchAuthenticationClass(AuthenticationClass cls) { - if ((this.authenticationClass == null) || (cls == null)) { - return true; - } - return this.authenticationClass.compareTo(cls) <= 0; - } - - protected boolean matchCommandName(SLCommand cmd) { - if ((commandName == null) || (cmd == null)) { - return true; - } - Matcher matcher = commandNamePattern.matcher(cmd.getName()); - if (matcher.matches()) { - if (paramChecker != null) { - return paramChecker.checkParameter(cmd); - } else { - return true; - } - } else { - return false; - } - } - - protected boolean matchPeerId(String peerUrl) { - if ((peerId == null) || (peerUrl == null)) { - return true; - } - if (peerType == PEER_TYPE.URL) { - Matcher matcher = peerIdPattern.matcher(peerUrl); - return matcher.matches(); - } else { - try { - URL url = new URL(peerUrl); - if (peerType == PEER_TYPE.HOST) { - try { - String host = url.getHost(); - String hostName = InetAddress.getByName(host) - .getCanonicalHostName(); - Matcher matcher = peerIdPattern.matcher(hostName); - return matcher.matches(); - } catch (UnknownHostException e) { - log.error("Cannot resolve hostname", e); - return false; - } - } else { - try { - String hostAddr = InetAddress.getByName(url.getHost()) - .getHostAddress(); - Matcher matcher = peerIdPattern.matcher(hostAddr); - return matcher.matches(); - } catch (UnknownHostException e) { - log.error("Cannot resolve host address", e); - return false; - } - } - } catch (MalformedURLException e) { - log.error("Cannot parse url", e); - return false; - } - } - } - - @Override - public RuleResult check(AccessCheckerContext checkCtx) { - log.debug("Processing rule: " + id); - if (matchAuthenticationClass(checkCtx.getAuthenticationClass()) - && matchCommandName(checkCtx.getCommand()) - && matchPeerId(checkCtx.getPeerUrl())) { - log.debug("Match found for rule: " + id); - return new RuleResult(action, userAction, true, chainId); - } - log.debug("No match found for rule: " + id); - return new RuleResult(action, userAction, false, chainId); - } - - public String getChainId() { - return chainId; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java deleted file mode 100644 index 706615c2..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java +++ /dev/null @@ -1,32 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - - -public class RuleResult extends ChainResult { - private String chainId; - - public RuleResult(Action action, UserAction userAction, boolean matchFound, String chainId) { - super(action, userAction, matchFound); - this.chainId = chainId; - } - - public String getDelegateChainId() { - return chainId; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java deleted file mode 100644 index 482d3ecb..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java +++ /dev/null @@ -1,118 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -import java.io.InputStream; - -import javax.xml.bind.JAXBException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slcommands.SLSourceContext; -import at.gv.egiz.bku.slcommands.SLTargetContext; - -/** - * Facade for the access controller - */ -public class SecurityManagerFacade { - - private static Log log = LogFactory.getLog(SecurityManagerFacade.class); - - private boolean allowUnmatched = false; - private ChainChecker inputFilter = null; - private ChainChecker outputFilter = null; - - public boolean mayInvokeCommand(SLCommand cmd, SLSourceContext ctx) { - if (inputFilter != null) { - AuthenticationClass ac = AuthenticationClassifier.getAuthenticationClass( - ctx.isSourceIsDataURL(), ctx.getSourceUrl(), ctx - .getSourceCertificate()); - AccessCheckerContext acc = new AccessCheckerContext(cmd, ac, ctx - .getSourceUrl().toString()); - try { - ChainResult cr = inputFilter.check(acc); - if (cr.matchFound()) { - if (cr.getAction() == Action.ALLOW) { - return true; - } else { - return false; - } - } else { - return allowUnmatched; - } - } catch (Exception e) { - log.error(e); - return false; - } - } else { - log.warn("No input chain defined"); - return allowUnmatched; - } - } - - public boolean maySendResult(SLCommand cmd, SLTargetContext ctx) { - if (outputFilter != null) { - AuthenticationClass ac = AuthenticationClassifier.getAuthenticationClass( - ctx.isTargetIsDataURL(), ctx.getTargetUrl(), ctx - .getTargetCertificate()); - AccessCheckerContext acc = new AccessCheckerContext(cmd, ac, ctx - .getTargetUrl().toString()); - try { - ChainResult cr = outputFilter.check(acc); - if (cr.matchFound()) { - if (cr.getAction() == Action.ALLOW) { - return true; - } else { - return false; - } - } else { - return allowUnmatched; - } - } catch (Exception e) { - log.error(e); - return false; - } - } else { - log.warn("No output chain defined"); - return allowUnmatched; - } - } - - /** - * Default policy if not match was found - * - * @param allow - */ - public void setAllowUnmatched(boolean allow) { - this.allowUnmatched = allow; - } - - public void init(InputStream is) { - inputFilter = null; - outputFilter = null; - AccessControllerFactory fab = AccessControllerFactory.getInstance(); - try { - fab.init(is); - } catch (JAXBException e) { - log.error(e); - } - inputFilter = fab.getChainChecker(AccessControllerFactory.INPUT_CHAIN); - outputFilter = fab.getChainChecker(AccessControllerFactory.OUTPUT_CHAIN); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java deleted file mode 100644 index c1f7028b..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java +++ /dev/null @@ -1,36 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.accesscontroller; - -public enum UserAction { - NONE("none"), INFO("info"), CONFIRM("confirm"), CONFIRM_WITH_SECRET("confirmWithSecret"); - - private String name; - - UserAction(String name) { - this.name = name; - } - - public static UserAction fromString(String s) { - for (UserAction ac : values()) { - if (ac.name.equals(s)) { - return ac; - } - } - return null; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java deleted file mode 100644 index 23f62134..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java +++ /dev/null @@ -1,89 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import at.gv.egiz.bku.conf.Configuration; -import java.io.InputStream; -import java.util.Date; - -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.stal.STAL; - -public abstract class AbstractBindingProcessor implements BindingProcessor { - protected Id id; - protected Configuration config; - protected STAL stal; - protected SLCommandInvoker commandInvoker; - protected long lastAccessedTime = System.currentTimeMillis(); - - public AbstractBindingProcessor(String idString) { - this.id = IdFactory.getInstance().createId(idString); - } - - /** - * @see java.lang.Thread#run() - */ - public abstract void run(); - - /** - * The caller is advised to check the result in case an error occurred. - * - * @see #getResult() - */ - public abstract void consumeRequestStream(InputStream aIs); - - public Id getId() { - return id; - } - - public STAL getSTAL() { - return stal; - } - - public SLCommandInvoker getCommandInvoker() { - return commandInvoker; - } - - public void updateLastAccessTime() { - lastAccessedTime = System.currentTimeMillis(); - } - - public Date getLastAccessTime() { - return new Date(lastAccessedTime); - } - - /** - * To be called after object creation. - * - * @param aStal - * must not be null - * @param aCommandInvoker - * must not be null - */ - public void init(STAL aStal, SLCommandInvoker aCommandInvoker, Configuration conf) { - if (aStal == null) { - throw new NullPointerException("STAL must not be set to null"); - } - if (aCommandInvoker == null) { - throw new NullPointerException("Commandinvoker must not be set to null"); - } - config = conf; - stal = aStal; - commandInvoker = aCommandInvoker; - Thread.currentThread().setName("BPID#"+getId().toString()); - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java deleted file mode 100644 index 0d978992..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java +++ /dev/null @@ -1,78 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import at.gv.egiz.bku.conf.Configuration; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Date; -import java.util.Locale; - -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.stal.STAL; - -/** - * Represents an single instance of a SL HTTP binding. - * - * @author wbauer - * - */ -public interface BindingProcessor extends Runnable { - - /** - * The stream must be read completely within this method. - * - * The caller is advised to check the result in case an error occurred. - * - * @see #getResult() - */ - public void consumeRequestStream(InputStream aIs); - - /** - * The unique Id of this http binding instance. - * @return - */ - public Id getId(); - - /** - * The used underlying STAL instance - * @return - */ - public STAL getSTAL(); - - public SLCommandInvoker getCommandInvoker(); - - public Date getLastAccessTime(); - - public void updateLastAccessTime(); - - public String getResultContentType(); - - public void writeResultTo(OutputStream os, String encoding) throws IOException; - - public void init(STAL aStal, SLCommandInvoker aCommandInvoker, Configuration config); - - /** - * Sets the preferred locale for userinteraction. - * If the locale is not set the default locale will be used. - * @param locale must not be null. - */ - public void setLocale(Locale locale); - - public boolean isFinished(); -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java deleted file mode 100644 index 9cad95a4..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java +++ /dev/null @@ -1,107 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.net.MalformedURLException; -import java.util.Locale; -import java.util.Set; - -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.stal.STALFactory; - -/** - * Central player that handles the protocol binding. - * - * @author wbauer - * - */ -public interface BindingProcessorManager { - - /** - * FactoryMethod creating a new BindingProcessor object. - * The created binding processor must be passed to the process method to execute. - * - * @param urlString - * the source url - * @param aSessionId - * optional an external sessionId (e.g. http session) could be - * provided. This parameter may be null. - * @param locale the locale used for user interaction, may be null - */ - public BindingProcessor createBindingProcessor(String urlString, - String aSessionId, Locale locale) throws MalformedURLException; - - /** - * FactoryMethod creating a new BindingProcessor object. - * The created binding processor must be passed to the process method to execute. - * - * @param protcol - * the source url - * @param aSessionId - * optional an external sessionId (e.g. http session) could be - * provided. This parameter may be null. - */ - public BindingProcessor createBindingProcessor(String urlString, - String aSessionId) throws MalformedURLException; - - - /** - * Gets the binding processor with a certain id. The binding processor must be passed to the - * process method before it is managed and thus returned by this method. - * @param aId must not be null - * @return null if the binding processor was not "processed" before. - */ - public BindingProcessor getBindingProcessor(Id aId); - - /** - * Sets the STAL factory that is used for creating STAL objects that are used by BindingProcessor objects. - * For each new BindingProcessor a new STAL object is created. - * @param aStalFactory the factory to be used. Must not be null. - */ - public void setSTALFactory(STALFactory aStalFactory); - - /** - * Sets the invoker to be used. - * @param invoker - */ - public void setSLCommandInvoker(SLCommandInvoker invoker); - - /** - * Creates a processing context, - * schedules the provided binding processor for processing and - * immediately returns the context. - * - * @param aBindingProcessor - */ - public ProcessingContext process(BindingProcessor aBindingProcessor); - - /** - * Removes a formerly added (by calling the process method) binding processor. - * @param bindingProcessor must not be null - */ - public void removeBindingProcessor(Id sessionId); - - /** - * A set of all managed binding processors. - * @return - */ - public Set getManagedIds(); - - public void shutdown(); - - public void shutdownNow(); -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java deleted file mode 100644 index bf9a63e2..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java +++ /dev/null @@ -1,330 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.binding; - -import at.gv.egiz.bku.conf.Configuration; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Locale; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.Future; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.utils.binding.Protocol; -import at.gv.egiz.stal.STAL; -import at.gv.egiz.stal.STALFactory; - -/** - * This class maintains all active BindingProcessor Objects. Currently, only - * HTTPBinding is supported. - */ -public class BindingProcessorManagerImpl implements BindingProcessorManager { - - public final static Protocol[] SUPPORTED_PROTOCOLS = { Protocol.HTTP, - Protocol.HTTPS }; - - private static Log log = LogFactory.getLog(BindingProcessorManagerImpl.class); - - /** spring injected config - * Passed to created bindingprocessors, to replace their configuration */ - protected Configuration config; - - protected STALFactory stalFactory; - protected SLCommandInvoker commandInvokerClass; - - private RemovalStrategy removalStrategy; - private ExecutorService executorService; - private Map contextMap = Collections.synchronizedMap(new HashMap()); -// private Map bindingProcessorMap = Collections -// .synchronizedMap(new HashMap()); - - /** - * Container to hold a Future and Bindingprocessor object as map value. - * - * @author wbauer - * @see BindingProcessorManagerImpl#bindingProcessorMap - */ -// static class MapEntityWrapper { -// private Future future; -// private BindingProcessor bindingProcessor; -// -// public MapEntityWrapper(Future future, BindingProcessor bindingProcessor) { -// if ((bindingProcessor == null) || (future == null)) { -// throw new NullPointerException("Argument must not be null"); -// } -// this.bindingProcessor = bindingProcessor; -// this.future = future; -// } -// -// public Future getFuture() { -// return future; -// } -// -// public BindingProcessor getBindingProcessor() { -// return bindingProcessor; -// } -// -// public int hashCode() { -// return bindingProcessor.getId().hashCode(); -// } -// -// public boolean equals(Object other) { -// if (other instanceof MapEntityWrapper) { -// MapEntityWrapper o = (MapEntityWrapper) other; -// return (o.bindingProcessor.getId().equals(bindingProcessor.getId())); -// } else { -// return false; -// } -// } -// } - - /** - * - * @param fab - * must not be null - * @param ci - * must not be null (prototype to generate new instances) - */ - public BindingProcessorManagerImpl(STALFactory fab, SLCommandInvoker ci, Configuration conf) { - if (fab == null) { - throw new NullPointerException("STALFactory must not be null"); - } - stalFactory = fab; - if (ci == null) { - throw new NullPointerException("SLCommandInvoker must not be null"); - } - commandInvokerClass = ci; - config = conf; - executorService = Executors.newCachedThreadPool(); - } - - /** - * - * @return the STALFactory currently used. - */ - public STALFactory getStalFactory() { - return stalFactory; - } - - /** - * Sets the STALFactory to be used. - * - * @param stalFactory - */ - public void setStalFactory(STALFactory stalFactory) { - this.stalFactory = stalFactory; - } - - /** - * Could be used to setup a new executor service during application stratup. - * - * @param executorService - */ - public void setExecutorService(ExecutorService executorService) { - this.executorService = executorService; - } - - public void setRemovalStrategy(RemovalStrategy aStrategy) { - removalStrategy = aStrategy; - } - - public RemovalStrategy getRemovlaStrategy() { - return removalStrategy; - } - - public void shutdown() { - log.info("Shutting down the BindingProcessorManager"); - executorService.shutdown(); - } - - public void shutdownNow() { - log.info("Shutting down the BindingProcessorManager NOW!"); - executorService.shutdownNow(); - log.debug("Number of binding contexts currently managed: " - + contextMap.size()); -// + bindingProcessorMap.size()); - if (log.isDebugEnabled()) { - for (ProcessingContext ctx : contextMap.values()) { - Id bpId = ctx.getBindingProcessor().getId(); - Future future = ctx.getFuture(); - log.debug(bpId + " cancelled: " + future.isCancelled()); - log.debug(bpId + " done: " + future.isDone()); - } -// for (Iterator it = bindingProcessorMap.values() -// .iterator(); it.hasNext();) { -// MapEntityWrapper entry = it.next(); -// log.debug(entry.getBindingProcessor().getId() + ": isDone: " -// + entry.getFuture().isDone()); -// log.debug(entry.getBindingProcessor().getId() + ": isCanceled: " -// + entry.getFuture().isCancelled()); -// } - } - } - - /** - * Uses the default locale - */ - public BindingProcessor createBindingProcessor(String srcUrl, - String aSessionId) throws MalformedURLException { - return createBindingProcessor(srcUrl, aSessionId, null); - } - - /** - * FactoryMethod creating a new BindingProcessor object. - * - * @param protocol - * must not be null - * @throws MalformedURLException - */ - public BindingProcessor createBindingProcessor(String srcUrl, - String aSessionId, Locale locale) throws MalformedURLException { - URL url = new URL(srcUrl); - String low = url.getProtocol().toLowerCase(); - Protocol proto = null; - for (int i = 0; i < SUPPORTED_PROTOCOLS.length; i++) { - if (SUPPORTED_PROTOCOLS[i].toString().equals(low)) { - proto = SUPPORTED_PROTOCOLS[i]; - break; - } - } - if (proto == null) { - throw new UnsupportedOperationException(); - } - BindingProcessor bindingProcessor = new HTTPBindingProcessor(aSessionId, - commandInvokerClass.newInstance(), url); - stalFactory.setLocale(locale); - STAL stal = stalFactory.createSTAL(); - bindingProcessor.init(stal, commandInvokerClass.newInstance(), config); - if (locale != null) { - bindingProcessor.setLocale(locale); -// stal.setLocale(locale); - } - return bindingProcessor; - } - - /** - * @return the bindingprocessor object for this id or null if no - * bindingprocessor was found. - */ - @Override - public BindingProcessor getBindingProcessor(Id aId) { -// if (bindingProcessorMap.get(aId) != null) { -// return bindingProcessorMap.get(aId).getBindingProcessor(); - ProcessingContext ctx = contextMap.get(aId); - if (ctx != null) { - return ctx.getBindingProcessor(); - } else { - return null; - } - } - - /** - * - */ - @Override - public void setSTALFactory(STALFactory aStalFactory) { - if (aStalFactory == null) { - throw new NullPointerException("Cannot set STALFactory to null"); - } - stalFactory = aStalFactory; - } - - /** - * Causes the BindingProcessorManager to manage the provided BindingProcessor - * Creates a processing context, - * schedules the provided binding processor for processing and - * immediately returns the context. - * - * @param aBindingProcessor - * must not be null - */ - @Override - public ProcessingContext process(BindingProcessor aBindingProcessor) { - if (contextMap.containsKey(aBindingProcessor.getId())) { -// if (bindingProcessorMap.containsKey(aBindingProcessor.getId())) { - log.fatal("Clashing ids, cannot process bindingprocessor with id:" - + aBindingProcessor.getId()); - throw new SLRuntimeException( - "Clashing ids, cannot process bindingprocessor with id:" - + aBindingProcessor.getId()); - } - log.debug("processing bindingprocessor: " + aBindingProcessor.getId()); - Future f = executorService.submit(aBindingProcessor); - ProcessingContext ctx = new ProcessingContext(aBindingProcessor, f); - contextMap.put(aBindingProcessor.getId(), ctx); -// bindingProcessorMap.put(aBindingProcessor.getId(), new MapEntityWrapper(f, -// aBindingProcessor)); - return ctx; - } - - @Override - public void setSLCommandInvoker(SLCommandInvoker invoker) { - commandInvokerClass = invoker; - } - - @Override - public void removeBindingProcessor(Id sessionId) { - log.debug("Removing binding processor: " + sessionId); - ProcessingContext ctx = contextMap.get(sessionId); - if (ctx == null) { - log.warn("no processing context to remove for session " + sessionId); - return; - } - Future f = ctx.getFuture(); - -// MapEntityWrapper wrapper = bindingProcessorMap.get(sessionId); -// if (wrapper == null) { -// return; -// } -// Future f = wrapper.getFuture(); - - if (!f.isDone()) { - log.trace("canceling " + sessionId); - f.cancel(true); - } - contextMap.remove(sessionId); -// bindingProcessorMap.remove(sessionId); - } - - @Override - public Set getManagedIds() { - Set result = new HashSet(); - synchronized (contextMap) { - for (Id id : contextMap.keySet()) { - result.add(id); - } - } -// synchronized (bindingProcessorMap) { -// for (Iterator it = bindingProcessorMap.keySet().iterator(); it -// .hasNext();) { -// result.add(it.next()); -// } -// } - return result; - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java deleted file mode 100644 index d3945253..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.binding; - -import at.gv.egiz.bku.conf.Configurator; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Properties; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLSocketFactory; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -/** - * Used to handle DataUrl connections as specified in the CCE's HTTP protocol binding. - * - */ -public class DataUrl { - - private static Log log = LogFactory.getLog(DataUrl.class); - private static DataUrlConnectionSPI connection; - private static Properties configuration; - private static SSLSocketFactory sslSocketFactory; - private static HostnameVerifier hostNameVerifier; - private URL url; - - /** spring injected config, to replace configuration */ - //private Configuration config; - - /** - * Sets the default DataUrlConnection implementation - * @param aClass must not be null - */ - static void setDataUrlConnectionImpl(DataUrlConnectionSPI conn) { - if (conn != null) { - connection = conn; - } - } - - public DataUrl(String aUrlString) throws MalformedURLException { - url = new URL(aUrlString); - if (connection == null) { - log.debug("Using default DataURLConnection class"); - connection = new DataUrlConnectionImpl(); - } - connection.setConfiguration(configuration); - connection.setSSLSocketFactory(sslSocketFactory); - connection.setHostnameVerifier(hostNameVerifier); - } - - public DataUrlConnection openConnection() { - try { - log.debug("Opening dataurl connection"); - DataUrlConnectionSPI retVal = connection.newInstance(); - retVal.init(url); - return retVal; - } catch (Exception e) { - log.error(e); - throw new SLRuntimeException("Cannot instantiate a dataurlconnection:", e); - } - } - - - /** - * set configuration for all subsequently instantiated DataURL objects - * @param props - */ - public static void setConfiguration(Properties props) { - configuration = props; - if (configuration != null) { - String className = configuration.getProperty(Configurator.DATAURLCONNECTION_CONFIG_P); - if (className != null) { - log.warn("Set DataURLConnection class not supported!"); - } - } - } - - /** - * set SSLSocketFactory for all subsequently instantiated DataURL objects - * @param socketFactory - */ - public static void setSSLSocketFactory(SSLSocketFactory socketFactory) { - sslSocketFactory = socketFactory; - } - - /** - * set HostnameVerifier for all subsequently instantiated DataURL objects - * @param hostNameVerifier - */ - public static void setHostNameVerifier(HostnameVerifier hostNameVerifier) { - DataUrl.hostNameVerifier = hostNameVerifier; - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java deleted file mode 100644 index 384cf71c..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java +++ /dev/null @@ -1,82 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.IOException; -import java.io.InputStream; -import java.net.SocketTimeoutException; -import java.net.URL; -import java.security.cert.X509Certificate; - -import at.gv.egiz.bku.slcommands.SLResult; - -/** - * Transmit a security layer result to DataURL via HTTP POST, encoded as multipart/form-data. - * The HTTP header user-agent is set to citizen-card-environment/1.2 BKU2 1.0. - * The form-parameter ResponseType is set to HTTP-Security-Layer-RESPONSE. - * All other headers/parameters are set by the caller. - * - * @author clemens - */ -public interface DataUrlConnection { - - public static final String FORMPARAM_RESPONSETYPE = "ResponseType"; - public static final String DEFAULT_RESPONSETYPE = "HTTP-Security-Layer-RESPONSE"; - public static final String FORMPARAM_XMLRESPONSE = "XMLResponse"; - public static final String FORMPARAM_BINARYRESPONSE = "BinaryResponse"; - - public static final String XML_RESPONSE_ENCODING = "UTF-8"; - - - public String getProtocol(); - - public URL getUrl(); - - /** - * Set a HTTP Header. - * @param key - * @param value multiple values are assumed to have the correct formatting (comma-separated list) - */ - public void setHTTPHeader(String key, String value); - - /** - * Set a form-parameter. - * @param name - * @param data - * @param contentType may be null - * @param charSet may be null - * @param transferEncoding may be null - */ - public void setHTTPFormParameter(String name, InputStream data, String contentType, String charSet, String transferEncoding); - - /** - * @pre httpHeaders != null - * @throws java.net.SocketTimeoutException - * @throws java.io.IOException - */ - public void connect() throws SocketTimeoutException, IOException; - - public X509Certificate getServerCertificate(); - - /** - * @pre connection != null - * @throws java.io.IOException - */ - public void transmit(SLResult slResult) throws IOException; - - public DataUrlResponse getResponse() throws IOException; -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java deleted file mode 100644 index 82c1be53..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java +++ /dev/null @@ -1,539 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.binding; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.net.HttpURLConnection; -import java.net.SocketTimeoutException; -import java.net.URL; -import java.net.URLEncoder; -import java.nio.charset.Charset; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLSocketFactory; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.httpclient.methods.multipart.FilePart; -import org.apache.commons.httpclient.methods.multipart.Part; -import org.apache.commons.httpclient.methods.multipart.StringPart; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.binding.multipart.InputStreamPartSource; -import at.gv.egiz.bku.binding.multipart.SLResultPart; -import at.gv.egiz.bku.conf.Configurator; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slcommands.SLResult.SLResultType; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.utils.URLEncodingWriter; -import at.gv.egiz.bku.utils.binding.Protocol; - -/** - * An implementation of the DataUrlConnectionSPI that supports - * multipart/form-data encoding and - * application/x-www-form-urlencoded for compatibility with legacy - * systems. - * - */ -public class DataUrlConnectionImpl implements DataUrlConnectionSPI { - - private final static Log log = LogFactory.getLog(DataUrlConnectionImpl.class); - - public static final byte[] B_DEFAULT_RESPONSETYPE = DEFAULT_RESPONSETYPE.getBytes(Charset.forName("UTF-8")); - - /** - * Supported protocols are HTTP and HTTPS. - */ - public final static Protocol[] SUPPORTED_PROTOCOLS = { Protocol.HTTP, - Protocol.HTTPS }; - - /** - * The X509 certificate of the DataURL server. - */ - protected X509Certificate serverCertificate; - - /** - * The protocol of the DataURL. - */ - protected Protocol protocol; - - /** - * Use application/x-www-form-urlencoded instead of - * standard conform application/x-www-form-urlencoded. - */ - protected boolean urlEncoded = true; - - /** - * The value of the DataURL. - */ - protected URL url; - - /** - * The URLConnection used for communication with the DataURL server. - */ - private HttpURLConnection connection; - - /** - * The HTTP request headers. - */ - protected Map requestHttpHeaders; - - /** - * The HTTP form parameters. - */ - protected ArrayList httpFormParameter; - - /** - * The boundary for multipart/form-data requests. - */ - protected String boundary; - - /** - * The configuration properties. - */ - protected Properties config = null; - - /** - * The SSLSocketFactory for HTTPS connections. - */ - protected SSLSocketFactory sslSocketFactory; - - /** - * The HostnameVerifier for HTTPS connections. - */ - protected HostnameVerifier hostnameVerifier; - - /** - * The response of the DataURL server. - */ - protected DataUrlResponse result; - - /* (non-Javadoc) - * @see at.gv.egiz.bku.binding.DataUrlConnection#getProtocol() - */ - public String getProtocol() { - if (protocol == null) { - return null; - } - return protocol.toString(); - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.binding.DataUrlConnection#connect() - */ - public void connect() throws SocketTimeoutException, IOException { - connection = (HttpURLConnection) url.openConnection(); - if (connection instanceof HttpsURLConnection) { - log.trace("Detected ssl connection"); - HttpsURLConnection https = (HttpsURLConnection) connection; - if (sslSocketFactory != null) { - log.debug("Setting custom ssl socket factory for ssl connection"); - https.setSSLSocketFactory(sslSocketFactory); - } else { - log.trace("No custom socket factory set"); - } - if (hostnameVerifier != null) { - log.debug("Setting custom hostname verifier"); - https.setHostnameVerifier(hostnameVerifier); - } - } else { - log.trace("No secure connection with: " + url + " class=" - + connection.getClass()); - } - connection.setDoOutput(true); - // Transfer-Encoding: chunked is problematic ... - // e.g. https://issues.apache.org/bugzilla/show_bug.cgi?id=37794 - // ... therefore disabled. - // connection.setChunkedStreamingMode(5*1024); - if (urlEncoded) { - log.debug("Setting DataURL Content-Type to " - + HttpUtil.APPLICATION_URL_ENCODED); - connection.addRequestProperty(HttpUtil.HTTP_HEADER_CONTENT_TYPE, - HttpUtil.APPLICATION_URL_ENCODED); - } else { - log.debug("Setting DataURL Content-Type to " - + HttpUtil.MULTIPART_FOTMDATA_BOUNDARY); - connection.addRequestProperty(HttpUtil.HTTP_HEADER_CONTENT_TYPE, - HttpUtil.MULTIPART_FOTMDATA + HttpUtil.SEPERATOR[0] - + HttpUtil.MULTIPART_FOTMDATA_BOUNDARY + "=" + boundary); - } - Set headers = requestHttpHeaders.keySet(); - Iterator headerIt = headers.iterator(); - while (headerIt.hasNext()) { - String name = headerIt.next(); - connection.setRequestProperty(name, requestHttpHeaders.get(name)); - } - log.trace("Connecting to: " + url); - connection.connect(); - if (connection instanceof HttpsURLConnection) { - HttpsURLConnection ssl = (HttpsURLConnection) connection; - X509Certificate[] certs = (X509Certificate[]) ssl.getServerCertificates(); - if ((certs != null) && (certs.length >= 1)) { - log.trace("Server certificate: " + certs[0]); - serverCertificate = certs[0]; - } - } - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.binding.DataUrlConnection#getServerCertificate() - */ - public X509Certificate getServerCertificate() { - return serverCertificate; - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.binding.DataUrlConnection#setHTTPHeader(java.lang.String, java.lang.String) - */ - public void setHTTPHeader(String name, String value) { - if (name != null && value != null) { - requestHttpHeaders.put(name, value); - } - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.binding.DataUrlConnection#setHTTPFormParameter(java.lang.String, java.io.InputStream, java.lang.String, java.lang.String, java.lang.String) - */ - public void setHTTPFormParameter(String name, InputStream data, - String contentType, String charSet, String transferEncoding) { - // if a content type is specified we have to switch to multipart/formdata encoding - if (contentType != null && contentType.length() > 0) { - urlEncoded = false; - } - httpFormParameter.add(new HTTPFormParameter(name, data, contentType, - charSet, transferEncoding)); - } - - - - /* (non-Javadoc) - * @see at.gv.egiz.bku.binding.DataUrlConnection#transmit(at.gv.egiz.bku.slcommands.SLResult) - */ - public void transmit(SLResult slResult) throws IOException { - log.trace("Sending data"); - if (urlEncoded) { - // - // application/x-www-form-urlencoded (legacy, SL < 1.2) - // - - OutputStream os = connection.getOutputStream(); - OutputStreamWriter streamWriter = new OutputStreamWriter(os, HttpUtil.DEFAULT_CHARSET); - - // ResponseType - streamWriter.write(FORMPARAM_RESPONSETYPE); - streamWriter.write("="); - streamWriter.write(URLEncoder.encode(DEFAULT_RESPONSETYPE, "UTF-8")); - streamWriter.write("&"); - - // XMLResponse / Binary Response - if (slResult.getResultType() == SLResultType.XML) { - streamWriter.write(DataUrlConnection.FORMPARAM_XMLRESPONSE); - } else { - streamWriter.write(DataUrlConnection.FORMPARAM_BINARYRESPONSE); - } - streamWriter.write("="); - streamWriter.flush(); - URLEncodingWriter urlEnc = new URLEncodingWriter(streamWriter); - slResult.writeTo(new StreamResult(urlEnc), false); - urlEnc.flush(); - - // transfer parameters - char[] cbuf = new char[512]; - int len; - for (HTTPFormParameter formParameter : httpFormParameter) { - streamWriter.write("&"); - streamWriter.write(URLEncoder.encode(formParameter.getName(), "UTF-8")); - streamWriter.write("="); - InputStreamReader reader = new InputStreamReader(formParameter.getData(), - (formParameter.getCharSet() != null) - ? formParameter.getCharSet() - : "UTF-8"); - // Note, using UTF-8 as fallback for decoding is safe. - // If the request was x-www-form-urlencoded, - // UTF-8 has been used for encoding of non-ASCII characters. - // If the request was multipart/form-data and contains any transfer parameters, - // the data URL request is going to be multipart/form-data encoded (see below). - while ((len = reader.read(cbuf)) != -1) { - urlEnc.write(cbuf, 0, len); - } - urlEnc.flush(); - } - streamWriter.close(); - - } else { - // - // multipart/form-data (conforming to SL 1.2) - // - - ArrayList parts = new ArrayList(); - - // ResponseType - StringPart responseType = new StringPart(FORMPARAM_RESPONSETYPE, - DEFAULT_RESPONSETYPE, "UTF-8"); - responseType.setTransferEncoding(null); - parts.add(responseType); - - // XMLResponse / Binary Response - SLResultPart slResultPart = new SLResultPart(slResult, - XML_RESPONSE_ENCODING); - if (slResult.getResultType() == SLResultType.XML) { - slResultPart.setTransferEncoding(null); - slResultPart.setContentType(slResult.getMimeType()); - slResultPart.setCharSet(XML_RESPONSE_ENCODING); - } else { - slResultPart.setTransferEncoding(null); - slResultPart.setContentType(slResult.getMimeType()); - } - parts.add(slResultPart); - - // transfer parameters - for (HTTPFormParameter formParameter : httpFormParameter) { - InputStreamPartSource source = new InputStreamPartSource(null, - formParameter.getData()); - FilePart part = new FilePart(formParameter.getName(), source, - formParameter.getContentType(), formParameter.getCharSet()); - part.setTransferEncoding(formParameter.getTransferEncoding()); - parts.add(part); - } - - OutputStream os = connection.getOutputStream(); - Part.sendParts(os, parts.toArray(new Part[parts.size()]), boundary.getBytes()); - os.close(); - - } - - // MultipartRequestEntity PostMethod - InputStream is = null; - try { - is = connection.getInputStream(); - } catch (IOException iox) { - log.info(iox); - } - log.trace("Reading response"); - result = new DataUrlResponse(url.toString(), connection.getResponseCode(), - is); - Map responseHttpHeaders = new HashMap(); - Map> httpHeaders = connection.getHeaderFields(); - for (Iterator keyIt = httpHeaders.keySet().iterator(); keyIt - .hasNext();) { - String key = keyIt.next(); - StringBuffer value = new StringBuffer(); - for (String val : httpHeaders.get(key)) { - value.append(val); - value.append(HttpUtil.SEPERATOR[0]); - } - String valString = value.substring(0, value.length() - 1); - if ((key != null) && (value.length() > 0)) { - responseHttpHeaders.put(key, valString); - } - } - result.setResponseHttpHeaders(responseHttpHeaders); - } - - @Override - public DataUrlResponse getResponse() throws IOException { - return result; - } - - /** - * inits protocol, url, httpHeaders, formParams - * - * @param url - * must not be null - */ - @Override - public void init(URL url) { - - for (int i = 0; i < SUPPORTED_PROTOCOLS.length; i++) { - if (SUPPORTED_PROTOCOLS[i].toString().equalsIgnoreCase(url.getProtocol())) { - protocol = SUPPORTED_PROTOCOLS[i]; - break; - } - } - if (protocol == null) { - throw new SLRuntimeException("Protocol " + url.getProtocol() - + " not supported for data url"); - } - this.url = url; - boundary = "--" + IdFactory.getInstance().createId().toString(); - requestHttpHeaders = new HashMap(); - - if (config != null) { - String version = config.getProperty(Configurator.SIGNATURE_LAYOUT); - if ((version != null) && (!"".equals(version.trim()))) { - log.debug("setting SignatureLayout header to " + version); - requestHttpHeaders.put(Configurator.SIGNATURE_LAYOUT, version); - } else { - log.debug("do not set SignatureLayout header"); - } - String userAgent = config.getProperty(Configurator.USERAGENT_CONFIG_P, Configurator.USERAGENT_DEFAULT); - requestHttpHeaders.put(HttpUtil.HTTP_HEADER_USER_AGENT, userAgent); - } else { - requestHttpHeaders - .put(HttpUtil.HTTP_HEADER_USER_AGENT, Configurator.USERAGENT_DEFAULT); - - } - - httpFormParameter = new ArrayList(); - - } - - @Override - public DataUrlConnectionSPI newInstance() { - DataUrlConnectionSPI uc = new DataUrlConnectionImpl(); - uc.setConfiguration(config); - uc.setSSLSocketFactory(sslSocketFactory); - uc.setHostnameVerifier(hostnameVerifier); - return uc; - } - - @Override - public URL getUrl() { - return url; - } - - @Override - public void setConfiguration(Properties config) { - this.config = config; - } - - @Override - public void setSSLSocketFactory(SSLSocketFactory socketFactory) { - this.sslSocketFactory = socketFactory; - } - - @Override - public void setHostnameVerifier(HostnameVerifier hostnameVerifier) { - this.hostnameVerifier = hostnameVerifier; - } - - public class HTTPFormParameter { - - private String name; - - private InputStream data; - - private String contentType; - - private String charSet; - - private String transferEncoding; - - /** - * @param name - * @param data - * @param contentType - * @param charSet - * @param transferEncoding - */ - public HTTPFormParameter(String name, InputStream data, String contentType, - String charSet, String transferEncoding) { - super(); - this.name = name; - this.data = data; - this.contentType = contentType; - this.charSet = charSet; - this.transferEncoding = transferEncoding; - } - - /** - * @return the name - */ - public String getName() { - return name; - } - - /** - * @param name the name to set - */ - public void setName(String name) { - this.name = name; - } - - /** - * @return the data - */ - public InputStream getData() { - return data; - } - - /** - * @param data the data to set - */ - public void setData(InputStream data) { - this.data = data; - } - - /** - * @return the contentType - */ - public String getContentType() { - return contentType; - } - - /** - * @param contentType the contentType to set - */ - public void setContentType(String contentType) { - this.contentType = contentType; - } - - /** - * @return the charSet - */ - public String getCharSet() { - return charSet; - } - - /** - * @param charSet the charSet to set - */ - public void setCharSet(String charSet) { - this.charSet = charSet; - } - - /** - * @return the transferEncoding - */ - public String getTransferEncoding() { - return transferEncoding; - } - - /** - * @param transferEncoding the transferEncoding to set - */ - public void setTransferEncoding(String transferEncoding) { - this.transferEncoding = transferEncoding; - } - - - - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java deleted file mode 100644 index f838b919..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java +++ /dev/null @@ -1,64 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.net.URL; -import java.util.Properties; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.SSLSocketFactory; - -/** - * Prototype of a DataurlconnectionSPI - * @author wbauer - * - */ -public interface DataUrlConnectionSPI extends DataUrlConnection { - - /** - * Returns a new instance of this class to handle a dataurl. - * Called by the factory each time the openConnection method is called. - * @return - */ - public DataUrlConnectionSPI newInstance(); - - /** - * Initializes the DataUrlConnection - * @param url - */ - public void init(URL url); - - /** - * Sets configuration parameters for this connection - * @param config - */ - public void setConfiguration(Properties config); - - /** - * Sets the socketfactory to be used for ssl connections. - * @param socketFactory if null the socket factory will not be set explicitly - */ - public void setSSLSocketFactory(SSLSocketFactory socketFactory); - - /** - * Sets the hostname verifier to be used, - * @param hostnameVerifier if null the default hostname verifier will be used - */ - public void setHostnameVerifier(HostnameVerifier hostnameVerifier); - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java deleted file mode 100644 index b75cb0f3..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java +++ /dev/null @@ -1,98 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.IOException; -import java.io.InputStream; -import java.io.PushbackInputStream; -import java.util.Iterator; -import java.util.Map; - -import at.gv.egiz.bku.utils.urldereferencer.StreamData; - -/** - * The response of a dataurl server. - * Additionally holds return code and response headers. - */ -public class DataUrlResponse extends StreamData { - - public final static String OK = ""; - - protected Map responseHttpHeaders; - - protected int responseCode = -1; - - public DataUrlResponse(String url, int responseCode, InputStream stream) { - super(url, null, new PushbackInputStream(stream, 10)); - this.responseCode = responseCode; - } - - public String getContentType() { - if (contentType != null) { - return contentType; - } - if (responseHttpHeaders == null) { - return null; - } - for (Iterator keyIt = responseHttpHeaders.keySet().iterator(); keyIt - .hasNext();) { - String key = keyIt.next(); - if (HttpUtil.HTTP_HEADER_CONTENT_TYPE.equalsIgnoreCase(key)) { - contentType = responseHttpHeaders.get(key); - return contentType; - } - } - return contentType; - } - - public void setResponseHttpHeaders(Map responseHttpHeaders) { - this.responseHttpHeaders = responseHttpHeaders; - } - - public Map getResponseHeaders() { - return responseHttpHeaders; - } - - public int getResponseCode() { - return responseCode; - } - - /** - * Checks if the http response equals "" - * - * @throws IOException - */ - public boolean isHttpResponseXMLOK() throws IOException { - String charset = HttpUtil.getCharset(contentType, true); - byte[] buffer = new byte[10]; - int i = 0; - int read = 0; - while ((i < 10) && (read != -1)) { - read = inputStream.read(buffer, i, 10 - i); - if (read != -1) { - i += read; - } - } - PushbackInputStream pbis = (PushbackInputStream) inputStream; - pbis.unread(buffer, 0, i); - if (i < 5) { - return false; - } - String ok = new String(buffer, 0, i, charset); - return (OK.equals(ok)); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java deleted file mode 100644 index d17a27c2..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java +++ /dev/null @@ -1,67 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.util.Iterator; -import java.util.Set; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * This class can be used to check the BindingProcessorManager for expired entries and remove them. - * Should be run periodically. - * - */ -public class ExpiryRemover implements RemovalStrategy { - - private static Log log = LogFactory.getLog(ExpiryRemover.class); - - protected BindingProcessorManager bindingProcessorManager; - // keep max 5 min. - protected long maxAcceptedAge = 1000 * 60 * 5; - - @Override - public void execute() { - log.debug("Triggered Expiry Remover"); - if (bindingProcessorManager == null) { - log.warn("Bindingprocessor not set, skipping removal"); - return; - } - Set managedIds = bindingProcessorManager.getManagedIds(); - for (Iterator it = managedIds.iterator(); it.hasNext();) { - Id bindId = it.next(); - BindingProcessor bp = bindingProcessorManager.getBindingProcessor(bindId); - if (bp != null) { - if (bp.getLastAccessTime().getTime() < (System.currentTimeMillis() - maxAcceptedAge)) { - log.debug("Removing binding processor: " + bp.getId()); - bindingProcessorManager.removeBindingProcessor(bp.getId()); - } - } - } - } - - public void setMaxAcceptedAge(long maxAcceptedAge) { - this.maxAcceptedAge = maxAcceptedAge; - } - - @Override - public void setBindingProcessorManager(BindingProcessorManager bp) { - bindingProcessorManager = bp; - } - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java deleted file mode 100644 index cce3d720..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java +++ /dev/null @@ -1,28 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -/** - * Form parameters with special meaning as defined in the CCE's http binding. - * - */ -public interface FixedFormParameters { - String XMLREQUEST = "XMLRequest"; - String REDIRECTURL = "RedirectURL"; - String DATAURL = "DataURL"; - String STYLESHEETURL = "StylesheetURL"; -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java deleted file mode 100644 index 93339451..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java +++ /dev/null @@ -1,39 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.InputStream; -import java.util.Iterator; - -/** - * Interface to access form control contents from the http request. - * It's designed to be used for URL encoded and multipart-formdata requests. - * @author wbauer - * - */ -public interface FormParameter { - - String getFormParameterName(); - - InputStream getFormParameterValue(); - - String getFormParameterContentType(); - - Iterator getHeaderNames(); - - String getHeaderValue(String headerName); -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java deleted file mode 100644 index 45aa9be6..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java +++ /dev/null @@ -1,93 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.InputStream; -import java.util.Collections; -import java.util.Iterator; - -import org.apache.commons.fileupload.FileItemHeaders; - -/** - * Simple wrapper to read data while consuming an stream within the http - * processor. - * - * - */ -public class FormParameterImpl implements FormParameter { - - protected InputStream dataStream; - protected String contentType; - protected String formName; - protected FileItemHeaders headers; - - public FormParameterImpl(String contentType, String formName, InputStream is, - FileItemHeaders header) { - this.contentType = contentType; - this.formName = formName; - this.dataStream = is; - this.headers = header; - } - - @Override - public String getFormParameterContentType() { - return contentType; - } - - @Override - public String getFormParameterName() { - return formName; - } - - @Override - public InputStream getFormParameterValue() { - return dataStream; - } - - @Override - public String getHeaderValue(String headerName) { - if (headers == null) { - return null; - } - return headers.getHeader(headerName); - } - - @SuppressWarnings("unchecked") - @Override - public Iterator getHeaderNames() { - if (headers == null) { - return Collections.EMPTY_LIST.iterator(); - } - return headers.getHeaderNames(); - } - - public FileItemHeaders getHeaders() { - return headers; - } - - public boolean equals(Object other) { - if (other instanceof FormParameter) { - FormParameter fp = (FormParameter) other; - return fp.getFormParameterName().equals(getFormParameterName()); - } - return false; - } - - public int hashCode() { - return getFormParameterName().hashCode(); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java deleted file mode 100644 index 8b6cd4b2..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java +++ /dev/null @@ -1,146 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Collections; -import java.util.Iterator; - -import org.apache.commons.fileupload.FileItemHeaders; -import org.apache.commons.fileupload.util.FileItemHeadersImpl; - -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.utils.StreamUtil; - -/** - * Simple store for form parameters based on a byte[] - * - * @author wbauer - * - */ -public class FormParameterStore implements FormParameter { - - private byte[] dataBuffer; - private String contentType; - private String parameterName; - private boolean initialized = false; - protected FileItemHeaders headers; - - /** - * Make sure to call init after creating a new instance. - */ - public FormParameterStore() { - } - - public void init(InputStream dataSource, String paramName, - String contentType, FileItemHeaders header) throws IOException { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - StreamUtil.copyStream(dataSource, os); - this.dataBuffer = os.toByteArray(); - this.parameterName = paramName; - this.contentType = contentType; - initialized = true; - this.headers = header; - } - - public void init(byte[] dataSource, String paramName, - String contentType, FileItemHeaders header) throws IOException { - this.dataBuffer = dataSource; - this.parameterName = paramName; - this.contentType = contentType; - initialized = true; - this.headers = header; - } - - public void init(FormParameter fp) throws IOException { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - StreamUtil.copyStream(fp.getFormParameterValue(), os); - this.dataBuffer = os.toByteArray(); - this.parameterName = fp.getFormParameterName(); - this.contentType = fp.getFormParameterContentType(); - if (fp instanceof FormParameterImpl) { - headers = ((FormParameterImpl) fp).getHeaders(); - } else { - FileItemHeadersImpl headersImpl = new FileItemHeadersImpl(); - for (Iterator i = fp.getHeaderNames(); i.hasNext();) { - String headerName = i.next(); - headersImpl.addHeader(headerName, fp.getHeaderValue(headerName)); - } - } - initialized = true; - } - - protected void ensureInitialized() { - if (!initialized) { - throw new SLRuntimeException("FormParameterStore not initialized"); - } - } - - /** - * Reads all data from the stream and stores it internally. The stream will - * not be closed. - * - * @param datSource - * @param formName - * @param contentType - */ - @Override - public String getFormParameterContentType() { - ensureInitialized(); - return contentType; - } - - @Override - public String getFormParameterName() { - ensureInitialized(); - return parameterName; - } - - /** - * May be called more than once. - */ - @Override - public InputStream getFormParameterValue() { - return new ByteArrayInputStream(dataBuffer); - } - - @Override - public String getHeaderValue(String name) { - if (headers == null) { - return null; - } - return headers.getHeader(name); - } - - @SuppressWarnings("unchecked") - @Override - public Iterator getHeaderNames() { - if (headers == null) { - return Collections.EMPTY_LIST.iterator(); - } - return headers.getHeaderNames(); - } - - public boolean isEmpty() { - ensureInitialized(); - return dataBuffer.length == 0; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java deleted file mode 100644 index e39addb5..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java +++ /dev/null @@ -1,844 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.binding; - -import iaik.utils.Base64InputStream; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Reader; -import java.io.Writer; -import java.net.URL; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.net.ssl.SSLHandshakeException; -import javax.xml.transform.Templates; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.URIResolver; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slcommands.ErrorResult; -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slcommands.SLCommandFactory; -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slcommands.SLSourceContext; -import at.gv.egiz.bku.slcommands.SLTargetContext; -import at.gv.egiz.bku.slcommands.impl.ErrorResultImpl; -import at.gv.egiz.bku.slexceptions.SLBindingException; -import at.gv.egiz.bku.slexceptions.SLException; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.utils.StreamUtil; -import at.gv.egiz.bku.utils.binding.Protocol; -import at.gv.egiz.bku.utils.urldereferencer.FormDataURLSupplier; -import at.gv.egiz.bku.utils.urldereferencer.SimpleFormDataContextImpl; -import at.gv.egiz.bku.utils.urldereferencer.StreamData; -import at.gv.egiz.bku.utils.urldereferencer.URIResolverAdapter; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; -import at.gv.egiz.stal.QuitRequest; -import at.gv.egiz.stal.STALRequest; - -/** - * Class performing the HTTP binding as defined by the CCE specification. - * Currently a huge monolithic class. - * - * @TODO refactor - */ -@SuppressWarnings("unchecked") -public class HTTPBindingProcessor extends AbstractBindingProcessor implements - FormDataURLSupplier { - - private static Log log = LogFactory.getLog(HTTPBindingProcessor.class); - - private static enum State { - INIT, PROCESS, DATAURL, TRANSFORM, FINISHED - }; - - public final static Collection XML_REQ_TRANSFER_ENCODING = Arrays - .asList(new String[] { "binary" }); - - protected static String XML_MIME_TYPE = "text/xml"; - protected static String BINARY_MIME_TYPE = "application/octet-stream"; - - /** - * If null everything is ok and the result is taken from the command invoker. - */ - protected SLException bindingProcessorError; - protected SLCommandInvoker commandInvoker; - protected DataUrlResponse dataUrlResponse; - protected Map headerMap = Collections.EMPTY_MAP; - protected SLCommand slCommand; - protected Map formParameterMap = new HashMap(); - protected SLSourceContext srcContex = new SLSourceContext(); - protected SLTargetContext targetContext = new SLTargetContext(); - protected URL srcUrl; - protected State currentState = State.INIT; - protected Templates templates = null; - protected String resultContentType = null; - protected SLResult slResult = null; - protected int responseCode = 200; - protected Map responseHeaders = Collections.EMPTY_MAP; - protected Locale locale = Locale.getDefault(); - protected boolean finished = false; - - /** - * - * @param id - * may be null. In this case a new session id will be created. - * @param cmdInvoker - * must not be null; - */ - public HTTPBindingProcessor(String id, SLCommandInvoker cmdInvoker, URL source) { - super(id); - this.srcUrl = source; - Protocol protocol = Protocol.fromString(source.getProtocol()); - if ((protocol != Protocol.HTTP) && (protocol != Protocol.HTTPS)) { - throw new SLRuntimeException("Protocol not supported: " + protocol); - } - if (cmdInvoker == null) { - throw new NullPointerException("Commandinvoker cannot be set to null"); - } - commandInvoker = cmdInvoker; - srcContex.setSourceUrl(source); - srcContex.setSourceIsDataURL(false); - } - - //---------------------------------------------------------------------------- - // ----------- BEGIN CONVENIENCE METHODS ----------- - - protected void sendSTALQuit() { - log.info("Sending QUIT command to STAL"); - List quit = new ArrayList(1); - quit.add(new QuitRequest()); - getSTAL().handleRequest(quit); - } - - protected String getFormParameterAsString(String formParameterName) { - FormParameter fp = formParameterMap.get(formParameterName); - return getFormParameterAsString(fp); - } - - protected String getFormParameterAsString(FormParameter fp) { - if (fp == null) { - return null; - } - try { - return StreamUtil.asString(fp.getFormParameterValue(), HttpUtil - .getCharset(fp.getFormParameterContentType(), true)); - } catch (IOException e) { - return null; - } - } - - protected String getDataUrl() { - return getFormParameterAsString(FixedFormParameters.DATAURL); - } - - protected String getStyleSheetUrl() { - return getFormParameterAsString(FixedFormParameters.STYLESHEETURL); - } - - protected List getFormParameters(String parameterNamePostfix) { - List resultList = new ArrayList(); - for (Iterator fpi = formParameterMap.keySet().iterator(); fpi - .hasNext();) { - String paramName = fpi.next(); - if (paramName.endsWith(parameterNamePostfix)) { - resultList.add(formParameterMap.get(paramName)); - } - } - return resultList; - } - - protected List getTransferHeaders() { - return getFormParameters("__"); - } - - protected List getTransferForms() { - List resultList = new ArrayList(); - for (Iterator fpi = formParameterMap.keySet().iterator(); fpi - .hasNext();) { - String paramName = fpi.next(); - if ((paramName.endsWith("_")) && (!paramName.endsWith("__"))) { - resultList.add(formParameterMap.get(paramName)); - } - } - return resultList; - } - - protected void closeDataUrlConnection() { - log.debug("Closing data url input stream"); - if (dataUrlResponse == null) { - return; - } - InputStream is = dataUrlResponse.getStream(); - if (is != null) { - try { - is.close(); - } catch (IOException e) { - log.info("Error closing input stream to dataurl server:" + e); - } - } - } - - //---------------------------------------------------------------------------- - // ----------- END CONVENIENCE METHODS ----------- - - //---------------------------------------------------------------------------- - // -- BEGIN Methods that handle the http binding activities as defined in the - // activity diagram -- - - protected void init() { - log.info("Starting Bindingprocessor in Thread: " - + Thread.currentThread().getId()); - if (bindingProcessorError != null) { - log.debug("Detected binding processor error, sending quit command"); - // sendSTALQuit(); - currentState = State.FINISHED; - } else if (slCommand == null) { - log.error("SLCommand not set (consumeRequest not called ??)"); - bindingProcessorError = new SLException(2000); - // sendSTALQuit(); - currentState = State.FINISHED; - } else { - currentState = State.PROCESS; - } - } - - protected void processRequest() { - log.debug("Entered State: " + State.PROCESS); - log.debug("Processing command: " + slCommand); - commandInvoker.setCommand(slCommand); - responseCode = 200; - responseHeaders = Collections.EMPTY_MAP; - dataUrlResponse = null; - try { - commandInvoker.invoke(srcContex); - } catch (SLException e) { - log.info("Caught exception: " + e); - bindingProcessorError = e; - currentState = State.TRANSFORM; - } - if (getDataUrl() != null) { - log.debug("Data Url set to: " + getDataUrl()); - currentState = State.DATAURL; - } else { - log.debug("No data url set"); - currentState = State.TRANSFORM; - } - } - - protected void handleDataUrl() { - log.debug("Entered State: " + State.DATAURL); - try { - DataUrl dataUrl = new DataUrl(getDataUrl()); - DataUrlConnection conn = dataUrl.openConnection(); - - // set transfer headers - for (FormParameter fp : getTransferHeaders()) { - String paramString = getFormParameterAsString(fp); - if (paramString == null) { - log.error("Got empty transfer header, ignoring this"); - } else { - String[] keyVal = paramString.split(":", 2); - String key = keyVal[0]; - String val = null; - if (keyVal.length == 2) { - val = keyVal[1]; - val = val.trim(); - } else { - log.error("Invalid transfer header encoding: "+paramString); - throw new SLBindingException(2005); - } - log.debug("Setting header " + key + " to value " + val); - conn.setHTTPHeader(key, val); - } - } - - // set transfer form parameters - for (FormParameter fp : getTransferForms()) { - String contentTransferEncoding = null; - String contentType = fp.getFormParameterContentType(); - String charSet = HttpUtil.getCharset(contentType, false); - if (charSet != null) { - contentType = contentType.substring(0, contentType - .lastIndexOf(HttpUtil.SEPERATOR[0])); - } - for (Iterator header = fp.getHeaderNames(); header.hasNext();) { - if (HttpUtil.CONTENT_TRANSFER_ENCODING - .equalsIgnoreCase(header.next())) { - contentTransferEncoding = getFormParameterAsString(fp); - } - } - log.debug("Setting form: " + fp.getFormParameterName() - + " contentType: " + contentType + " charset: " + charSet - + " contentTransferEncoding: " + contentTransferEncoding); - conn.setHTTPFormParameter(fp.getFormParameterName(), fp - .getFormParameterValue(), contentType, charSet, - contentTransferEncoding); - } - - // connect - conn.connect(); - // fetch and set SL result - targetContext.setTargetIsDataURL(true); - targetContext.setTargetCertificate(conn.getServerCertificate()); - targetContext.setTargetUrl(conn.getUrl()); - SLResult result = commandInvoker.getResult(targetContext); - - // transfer result - conn.transmit(result); - - // process Dataurl response - dataUrlResponse = conn.getResponse(); - log.debug("Received data url response code: " - + dataUrlResponse.getResponseCode()); - - switch (dataUrlResponse.getResponseCode()) { - case 200: - String contentType = dataUrlResponse.getContentType(); - log.debug("Got dataurl response content type: " + contentType); - if (contentType != null) { - if ((contentType.startsWith(HttpUtil.APPLICATION_URL_ENCODED)) - || (contentType.startsWith(HttpUtil.MULTIPART_FOTMDATA))) { - log.debug("Detected SL Request in dataurl response"); - // process headers and request - setHTTPHeaders(dataUrlResponse.getResponseHeaders()); - consumeRequestStream(dataUrlResponse.getStream()); - //TODO check for bindingProcessorError - closeDataUrlConnection(); - srcContex.setSourceCertificate(conn.getServerCertificate()); - srcContex.setSourceIsDataURL(true); - srcContex.setSourceUrl(conn.getUrl()); - currentState = State.PROCESS; - } else if (((contentType.startsWith(HttpUtil.TXT_HTML)) - || (contentType.startsWith(HttpUtil.TXT_PLAIN)) - || (contentType.startsWith(HttpUtil.TXT_XML))) - && (dataUrlResponse.isHttpResponseXMLOK())) { - log.info("Dataurl response matches with content type: " - + contentType); - currentState = State.TRANSFORM; - - } else if ((contentType.startsWith(HttpUtil.TXT_XML)) - && (!dataUrlResponse.isHttpResponseXMLOK())) { - log - .debug("Detected text/xml dataurl response with content != "); - headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType); - assignXMLRequest(dataUrlResponse.getStream(), HttpUtil.getCharset( - contentType, true)); - closeDataUrlConnection(); - srcContex.setSourceCertificate(conn.getServerCertificate()); - srcContex.setSourceIsDataURL(true); - srcContex.setSourceUrl(conn.getUrl()); - currentState = State.PROCESS; - // just to be complete, actually not used - srcContex.setSourceHTTPReferer(dataUrlResponse.getResponseHeaders() - .get(HttpUtil.HTTP_HEADER_REFERER)); - } else { - resultContentType = contentType; - responseHeaders = dataUrlResponse.getResponseHeaders(); - responseCode = dataUrlResponse.getResponseCode(); - currentState = State.FINISHED; - } - } else { - log.debug("Content type not set in dataurl response"); - closeDataUrlConnection(); - throw new SLBindingException(2007); - } - - break; - case 307: - contentType = dataUrlResponse.getContentType(); - if ((contentType != null) && (contentType.startsWith(HttpUtil.TXT_XML))) { - log.debug("Received dataurl response code 307 with XML content"); - String location = dataUrlResponse.getResponseHeaders().get( - HttpUtil.HTTP_HEADER_LOCATION); - if (location == null) { - log - .error("Did not get a location header for a 307 data url response"); - throw new SLBindingException(2003); - } - // consumeRequestStream(dataUrlResponse.getStream()); - FormParameterStore fp = new FormParameterStore(); - fp.init(location.getBytes(HttpUtil.DEFAULT_CHARSET), - FixedFormParameters.DATAURL, null, null); - formParameterMap.put(FixedFormParameters.DATAURL, fp); - headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType); - assignXMLRequest(dataUrlResponse.getStream(), HttpUtil.getCharset( - dataUrlResponse.getContentType(), true)); - closeDataUrlConnection(); - srcContex.setSourceCertificate(conn.getServerCertificate()); - srcContex.setSourceIsDataURL(true); - srcContex.setSourceUrl(conn.getUrl()); - currentState = State.PROCESS; - // just to be complete, actually not used - srcContex.setSourceHTTPReferer(dataUrlResponse.getResponseHeaders() - .get(HttpUtil.HTTP_HEADER_REFERER)); - - } else { - log.debug("Received dataurl response code 307 non XML content: " - + dataUrlResponse.getContentType()); - resultContentType = dataUrlResponse.getContentType(); - currentState = State.FINISHED; - } - responseHeaders = dataUrlResponse.getResponseHeaders(); - responseCode = dataUrlResponse.getResponseCode(); - break; - - case 301: - case 302: - case 303: - responseHeaders = dataUrlResponse.getResponseHeaders(); - responseCode = dataUrlResponse.getResponseCode(); - resultContentType = dataUrlResponse.getContentType(); - currentState = State.FINISHED; - break; - - default: - // issue error - log.info("Unexpected response code from dataurl server: " - + dataUrlResponse.getResponseCode()); - throw new SLBindingException(2007); - } - - } catch (SLException slx) { - bindingProcessorError = slx; - log.error("Error during dataurl communication"); - resultContentType = HttpUtil.TXT_XML; - currentState = State.TRANSFORM; - } catch (SSLHandshakeException hx) { - bindingProcessorError = new SLException(2010); - log.info("Error during dataurl communication", hx); - resultContentType = HttpUtil.TXT_XML; - currentState = State.TRANSFORM; - } catch (IOException e) { - bindingProcessorError = new SLBindingException(2001); - log.error("Error while data url handling", e); - resultContentType = HttpUtil.TXT_XML; - currentState = State.TRANSFORM; - return; - } - } - - protected void transformResult() { - log.debug("Entered State: " + State.TRANSFORM); - if (bindingProcessorError != null) { - resultContentType = HttpUtil.TXT_XML; - } else if (dataUrlResponse != null) { - resultContentType = dataUrlResponse.getContentType(); - } else { - targetContext.setTargetIsDataURL(false); - targetContext.setTargetUrl(srcUrl); - try { - slResult = commandInvoker.getResult(targetContext); - resultContentType = slResult.getMimeType(); - log - .debug("Successfully got SLResult from commandinvoker, setting mimetype to: " - + resultContentType); - } catch (SLException e) { - log.info("Cannot get result from invoker:", e); - bindingProcessorError = new SLException(6002); - resultContentType = HttpUtil.TXT_XML; - } - } - templates = getTemplates(getStyleSheetUrl()); - if (templates != null) { - log.debug("Output transformation required"); - resultContentType = templates.getOutputProperties().getProperty("media-type"); - log.debug("Got media type from stylesheet: " + resultContentType); - if (resultContentType == null) { - log.debug("Setting to default text/xml result conent type"); - resultContentType = "text/xml"; - } - log.debug("Deferring sytylesheet processing"); - } - currentState = State.FINISHED; - } - - protected void finished() { - log.debug("Entered State: " + State.FINISHED); - if (bindingProcessorError != null) { - log.debug("Binding processor error, sending quit command"); - resultContentType = HttpUtil.TXT_XML; - } - sendSTALQuit(); - log.info("Terminating Bindingprocessor; Thread: " - + Thread.currentThread().getId()); - finished = true; - } - - // -- END Methods that handle the http binding activities as defined in the - // activity diagram -- - //---------------------------------------------------------------------------- - - /** - * Sets the headers of the SL Request. IMPORTANT: make sure to set all headers - * before invoking {@link #consumeRequestStream(InputStream)} - * - * @param aHeaderMap - * if null all header will be cleared. - */ - public void setHTTPHeaders(Map aHeaderMap) { - headerMap = new HashMap(); - // ensure lowercase keys - if (aHeaderMap != null) { - for (String s : aHeaderMap.keySet()) { - if (s != null) { - headerMap.put(s.toLowerCase(), aHeaderMap.get(s)); - if (s.equalsIgnoreCase(HttpUtil.HTTP_HEADER_REFERER)) { - String referer = aHeaderMap.get(s); - log.debug("Got referer header: " + referer); - srcContex.setSourceHTTPReferer(referer); - } - } - } - } - } - - public void setSourceCertificate(X509Certificate aCert) { - srcContex.setSourceCertificate(aCert); - } - - /** - * The HTTPBindingProcessor does not handle redirect URLs. It only provides - * the parameter. - * - * @return null if redirect url is not set. - */ - public String getRedirectURL() { - return getFormParameterAsString(FixedFormParameters.REDIRECTURL); - } - - public String getFormDataContentType(String aParameterName) { - FormParameter fp = formParameterMap.get(aParameterName); - if (fp != null) { - return fp.getFormParameterContentType(); - } - return null; - } - - public InputStream getFormData(String aParameterName) { - FormParameter fp = formParameterMap.get(aParameterName); - if (fp != null) { - final String enc = fp.getHeaderValue("Content-Transfer-Encoding"); - if (enc == null || "binary".equals(enc)) { - return fp.getFormParameterValue(); - } else if ("base64".equals(enc)) { - return new Base64InputStream(fp.getFormParameterValue()); - } else { - return new InputStream() { - @Override - public int read() throws IOException { - throw new IOException("Content-Transfer-Encoding : " + enc - + " is not supported."); - } - }; - } - } - return null; - } - - protected void assignXMLRequest(InputStream is, String charset) - throws IOException, SLException { - Reader r = new InputStreamReader(is, charset); - StreamSource source = new StreamSource(r); - SLCommandContext commandCtx = new SLCommandContext(); - commandCtx.setSTAL(getSTAL()); - commandCtx.setURLDereferencerContext(new SimpleFormDataContextImpl(this)); - commandCtx.setLocale(locale); - slCommand = SLCommandFactory.getInstance().createSLCommand(source, - commandCtx); - log.debug("Created new command: " + slCommand); - } - - @Override - public void run() { - boolean done = false; - int hopcounter = 0; - if (bindingProcessorError != null) { - currentState = State.FINISHED; - } - try { - while (!done) { - try { - switch (currentState) { - case INIT: - init(); - break; - case PROCESS: - processRequest(); - break; - case DATAURL: - handleDataUrl(); - if (++hopcounter > config.getMaxDataUrlHops()) { - log.error("Maximum number of dataurl hops reached"); - bindingProcessorError = new SLBindingException(2000); - currentState = State.FINISHED; - } - break; - case TRANSFORM: - transformResult(); - break; - case FINISHED: - done = true; - finished(); - break; - } - } catch (RuntimeException rte) { - throw rte; - } catch (Exception t) { - log.error("Caught unexpected exception", t); - responseCode = 200; - resultContentType = HttpUtil.TXT_XML; - responseHeaders = Collections.EMPTY_MAP; - bindingProcessorError = new SLException(2000); - currentState = State.FINISHED; - } - } - } catch (Throwable t) { - log.error("Caught unexpected exception", t); - responseCode = 200; - resultContentType = HttpUtil.TXT_XML; - responseHeaders = Collections.EMPTY_MAP; - bindingProcessorError = new SLException(2000); - currentState = State.FINISHED; - } - log.debug("Terminated http binding processor"); - finished = true; - } - - @Override - public void consumeRequestStream(InputStream is) { - try { - log.debug("Start consuming request stream"); - formParameterMap.clear(); - String cl = headerMap - .get(HttpUtil.HTTP_HEADER_CONTENT_TYPE.toLowerCase()); - if (cl == null) { - log.info("No content type set in http header"); - throw new SLBindingException(2006); - } - InputDecoder id = InputDecoderFactory.getDecoder(cl, is); - if (id == null) { - log.error("Cannot get inputdecoder for is"); - throw new SLException(2006); - } - for (Iterator fpi = id.getFormParameterIterator(); fpi - .hasNext();) { - FormParameter fp = fpi.next(); - log.debug("Got request parameter with name: " - + fp.getFormParameterName()); - if (fp.getFormParameterName().equals(FixedFormParameters.XMLREQUEST)) { - log.debug("Creating XML Request"); - for (Iterator headerIterator = fp.getHeaderNames(); headerIterator - .hasNext();) { - String headerName = headerIterator.next(); - if (HttpUtil.CONTENT_TRANSFER_ENCODING.equalsIgnoreCase(headerName)) { - String transferEncoding = fp.getHeaderValue(headerName); - log.debug("Got transfer encoding for xmlrequest: " - + transferEncoding); - if (XML_REQ_TRANSFER_ENCODING.contains(transferEncoding)) { - log.debug("Supported transfer encoding: " + transferEncoding); - } else { - log - .error("Transferencoding not supported: " - + transferEncoding); - throw new SLBindingException(2005); - } - } - } - String charset = HttpUtil.getCharset(cl, true); - assignXMLRequest(fp.getFormParameterValue(), charset); - } else { - FormParameterStore fps = new FormParameterStore(); - fps.init(fp); - //if (!fps.isEmpty()) { - log.debug("Setting form parameter: " + fps.getFormParameterName()); - formParameterMap.put(fps.getFormParameterName(), fps); - //} - } - } - if (slCommand == null) { - throw new SLBindingException(2004); - } - } catch (SLException slx) { - log.info("Error while consuming input stream " + slx); - bindingProcessorError = slx; - } catch (Throwable t) { - log.info("Error while consuming input stream " + t, t); - bindingProcessorError = new SLException(2000); - } finally { - try { - if (is.read() != -1) { - log.warn("Request input stream not completely read."); - while (is.read() != -1); - } - } catch (IOException e) { - log.error(e); - } - } - } - - @Override - public String getResultContentType() { - return resultContentType; - } - - protected Templates getTemplates(String styleSheetURL) { - if (styleSheetURL == null) { - log.debug("Stylesheet URL not set"); - return null; - } - try { - URLDereferencerContext urlCtx = new SimpleFormDataContextImpl(this); - URIResolver resolver = new URIResolverAdapter(URLDereferencer - .getInstance(), urlCtx); - TransformerFactory factory = TransformerFactory.newInstance(); - factory.setURIResolver(resolver); - StreamData sd = URLDereferencer.getInstance().dereference(styleSheetURL, - urlCtx); - return factory.newTemplates(new StreamSource(sd.getStream())); - } catch (Exception ex) { - log.info("Cannot instantiate transformer", ex); - bindingProcessorError = new SLException(2002); - return null; - } - } - - protected void handleBindingProcessorError(OutputStream os, String encoding, - Templates templates) throws IOException { - log.debug("Writing error as result"); - ErrorResultImpl error = new ErrorResultImpl(bindingProcessorError, locale); - Writer writer = writeXMLDeclarationAndProcessingInstruction(os, encoding); - error.writeTo(new StreamResult(writer), templates, true); - } - - protected Writer writeXMLDeclarationAndProcessingInstruction(OutputStream os, String encoding) throws IOException { - if (encoding == null) { - encoding = HttpUtil.DEFAULT_CHARSET; - } - OutputStreamWriter writer = new OutputStreamWriter(os, encoding); - writer.write("\n"); - writer.write("\n"); - return writer; - } - - @Override - public void writeResultTo(OutputStream os, String encoding) - throws IOException { - if (encoding == null) { - encoding = HttpUtil.DEFAULT_CHARSET; - } - if (bindingProcessorError != null) { - log.debug("Detected error in binding processor, writing error as result"); - handleBindingProcessorError(os, encoding, templates); - return; - } else if (dataUrlResponse != null) { - log.debug("Writing data url response as result"); - String charEnc = HttpUtil.getCharset(dataUrlResponse.getContentType(), - true); - InputStreamReader isr = new InputStreamReader( - dataUrlResponse.getStream(), charEnc); - OutputStreamWriter osw = new OutputStreamWriter(os, encoding); - if (templates == null) { - StreamUtil.copyStream(isr, osw); - } else { - try { - Transformer transformer = templates.newTransformer(); - transformer.transform(new StreamSource(isr), new StreamResult(osw)); - } catch (TransformerException e) { - log.fatal("Exception occured during result transformation", e); - // bindingProcessorError = new SLException(2008); - // handleBindingProcessorError(os, encoding, null); - return; - } - } - osw.flush(); - isr.close(); - } else if (slResult == null) { - // result not yet assigned -> must be a cancel - bindingProcessorError = new SLException(6001); - handleBindingProcessorError(os, encoding, templates); - return; - } else { - log.debug("Getting result from invoker"); - boolean fragment = false; - Writer writer; - if (slResult instanceof ErrorResult) { - writer = writeXMLDeclarationAndProcessingInstruction(os, encoding); - fragment = true; - } else { - writer = new OutputStreamWriter(os, encoding); - } - slResult.writeTo(new StreamResult(writer), templates, fragment); - writer.flush(); - } - } - - /** - * The response code from the dataurl server or 200 if no dataurl server - * created the result - * - * @return - */ - public int getResponseCode() { - return responseCode; - } - - /** - * All headers from the data url server in case of a direct forward from the - * dataurl server. - * - * @return - */ - public Map getResponseHeaders() { - return responseHeaders; - } - - @Override - public void setLocale(Locale locale) { - if (locale == null) { - throw new NullPointerException("Locale must not be set to null"); - } - this.locale = locale; - } - - @Override - public boolean isFinished() { - return finished; - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java deleted file mode 100644 index 5ea7b25e..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java +++ /dev/null @@ -1,79 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.util.Map; - -import org.apache.commons.fileupload.ParameterParser; - -/** - * Placeholder for some HTTP related constants and helper method to extract the charset for a request. - * - */ -public class HttpUtil { - - public final static String CHAR_SET = "charset"; - public final static String DEFAULT_CHARSET = "ISO-8859-1"; - public final static String HTTP_HEADER_CONTENT_TYPE = "Content-Type"; - public static final String HTTP_HEADER_USER_AGENT = "User-Agent"; - public static final String HTTP_HEADER_SERVER = "Server"; - public final static String HTTP_HEADER_REFERER = "Referer"; - public final static String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding"; - public final static String MULTIPART_FOTMDATA = "multipart/form-data"; - public final static String MULTIPART_FOTMDATA_BOUNDARY = "boundary"; - public final static String TXT_XML = "text/xml"; - public final static String TXT_PLAIN = "text/plain"; - public final static String TXT_HTML = "text/html"; - public final static String APPLICATION_URL_ENCODED = "application/x-www-form-urlencoded"; - public final static String HTTP_HEADER_LOCATION = "Location"; - - public final static char[] SEPERATOR = { ';' }; - - /** - * Extracts charset from a content type header. - * - * @param contentType - * @param replaceNullWithDefault - * if true the method return the default charset if not set - * @return charset String or null if not present - */ - @SuppressWarnings("unchecked") - public static String getCharset(String contentType, - boolean replaceNullWithDefault) { - ParameterParser pf = new ParameterParser(); - pf.setLowerCaseNames(true); - Map map = pf.parse(contentType, SEPERATOR); - String retVal = (String) map.get(CHAR_SET); - if ((retVal == null) && (replaceNullWithDefault)) { - if (map.containsKey(APPLICATION_URL_ENCODED)) { - // default charset for url encoded data - return "UTF-8"; - } - retVal = getDefaultCharset(); - } - return retVal; - } - - /** - * - * Not to be used for url encoded requests. - */ - public static String getDefaultCharset() { - return DEFAULT_CHARSET; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java deleted file mode 100644 index fc7c35c3..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -/** - * The unique identifier for a BindingProcessor - * @author wbauer - * - */ -public interface Id { - - @Override - public String toString(); - - @Override - public boolean equals(Object id); -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java deleted file mode 100644 index 60bf69a4..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java +++ /dev/null @@ -1,106 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Creates or converts Ids for BindingProcessors. - * @author wbauer - * - */ -public class IdFactory { - - public static int DEFAULT_NUMBER_OF_BITS = 168; - - private static Log log = LogFactory.getLog(IdFactory.class); - - private static IdFactory instance = new IdFactory(); - - private SecureRandom random; - private int numberOfBits = DEFAULT_NUMBER_OF_BITS; - - private IdFactory() { - try { - random = SecureRandom.getInstance("SHA1PRNG"); - } catch (NoSuchAlgorithmException e) { - log.error("Cannot instantiate secure random" + e); - } - } - - public static IdFactory getInstance() { - return instance; - } - - - /** - * set the secure random number generator to create secure ids. - * - * @param random - * must not be null - */ - public void setSecureRandom(SecureRandom random) { - if (random == null) { - throw new NullPointerException("Cannot set secure random to null"); - } - this.random = random; - } - - /** - * Don't use this method unless you know exactly what you do ! - * Be sure to use a sufficient large entropy - * @param numberOfBits >=1 (although this small entropy does not make sense) - */ - public void setNumberOfBits(int numberOfBits) { - if (numberOfBits <1) { - throw new IllegalArgumentException("Cannot set number of bits < 1"); - } - this.numberOfBits = numberOfBits; - } - - public int getNumberOfBits() { - return numberOfBits; - } - - /** - * Creates a new Id object with the factory's secure RNG and the set number of - * bits. - * - * @return - */ - public Id createId() { - return new IdImpl(numberOfBits, random); - } - - /** - * Creates an Id object for the provided String - * - * @param idString - * may be null in this case the method call creates a new Id. - * @return - */ - public Id createId(String idString) { - if (idString == null) { - return createId(); - } - return new IdImpl(idString); - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java deleted file mode 100644 index c8a76823..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import iaik.utils.Base64OutputStream; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.security.SecureRandom; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Implementation that uses a Base64 representation for self generated Ids. - * @author wbauer - * - */ -public class IdImpl implements at.gv.egiz.bku.binding.Id { - private static Log log = LogFactory.getLog(IdImpl.class); - - private String idString; - - public IdImpl(int bitNumber, SecureRandom random) { - int byteSize = bitNumber/8; - if (bitNumber % 8 != 0) { - byteSize++; - } - byte[] randomBytes = new byte[byteSize]; - random.nextBytes(randomBytes); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - Base64OutputStream b64 = new Base64OutputStream(baos); - try { - b64.write(randomBytes); - b64.flush(); - b64.close(); - idString = new String(baos.toByteArray()); - } catch (IOException e) { - log.error("Cannot create secure id: "+e); - } - } - - public IdImpl(String idString) { - if (idString == null) { - throw new NullPointerException("Provided idstring must not be null"); - } - this.idString = idString; - } - - @Override - public String toString() { - return idString; - } - - @Override - public int hashCode() { - return idString.hashCode(); - } - - @Override - public boolean equals(Object other) { - if (other instanceof Id) { - Id otherId = (Id)other; - return otherId.toString().equals(idString); - } else { - return false; - } - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java deleted file mode 100644 index e22e54f2..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java +++ /dev/null @@ -1,41 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.InputStream; -import java.util.Iterator; - -/** - * Decodes http input stream (either url encoded or multipart formdata) - * @author wbauer - * - */ -public interface InputDecoder { - /** - * Called from Factory. - * @param contentType - */ - void setContentType(String contentType); - - /** - * Called from Factory. - * @param is the input must not be null - */ - void setInputStream(InputStream is); - - Iterator getFormParameterIterator(); -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java deleted file mode 100644 index 211deee7..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java +++ /dev/null @@ -1,89 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Factory to get a matching instance for a encoded input stream when reading a http request. - * - */ -public class InputDecoderFactory { - - public final static String MULTIPART_FORMDATA = "multipart/form-data"; - public final static String URL_ENCODED = "application/x-www-form-urlencoded"; - - private static InputDecoderFactory instance = new InputDecoderFactory(); - private static Log log = LogFactory.getLog(InputDecoderFactory.class); - - private String defaultEncoding = URL_ENCODED; - private Map> decoderMap = new HashMap>(); - - private InputDecoderFactory() { - decoderMap.put(MULTIPART_FORMDATA, MultiPartFormDataInputDecoder.class); - decoderMap.put(URL_ENCODED, XWWWFormUrlInputDecoder.class); - } - - public static InputDecoder getDefaultDecoder(InputStream is) { - return getDecoder(instance.defaultEncoding, is); - } - - /** - * - * @param contentType - * @param is - * @return null if the content type is not supported - */ - public static InputDecoder getDecoder(String contentType, InputStream is) { - String prefix = contentType.split(";")[0].trim().toLowerCase(); - Class dec = instance.decoderMap.get(prefix); - if (dec == null) { - log.info("Unknown encoding prefix " + contentType); - return null; - } - InputDecoder id; - try { - id = dec.newInstance(); - id.setContentType(contentType); - id.setInputStream(is); - return id; - } catch (InstantiationException e) { - log.error(e); - throw new IllegalArgumentException( - "Cannot get an input decoder for content type: " + contentType); - } catch (IllegalAccessException e) { - log.error(e); - throw new IllegalArgumentException( - "Cannot get an input decoder for content type: " + contentType); - } - } - - /** - * Allows to register decoders for special mime types. - * @param mimeType - * @param decoder - */ - public static void registerDecoder(String mimeType, - Class decoder) { - instance.decoderMap.put(mimeType.toLowerCase(), decoder); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java deleted file mode 100644 index f8b13553..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java +++ /dev/null @@ -1,133 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Iterator; - -import org.apache.commons.fileupload.FileItemIterator; -import org.apache.commons.fileupload.FileItemStream; -import org.apache.commons.fileupload.FileUpload; -import org.apache.commons.fileupload.FileUploadException; -import org.apache.commons.fileupload.RequestContext; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -/** - * The code to detect the multipart boundary is based on - * org.apache.commons.fileupload.FileUploadBase of - * http://commons.apache.org/fileupload/ - * - * @author wbauer - * - */ -public class MultiPartFormDataInputDecoder implements InputDecoder, - RequestContext { - - private static Log log = LogFactory - .getLog(MultiPartFormDataInputDecoder.class); - - private String contentType; - private InputStream stream; - - @Override - public void setContentType(String contentType) { - this.contentType = contentType; - } - - @Override - public String getCharacterEncoding() { - return null; - } - - @Override - public int getContentLength() { - return 0; - } - - @Override - public String getContentType() { - return contentType; - } - - @Override - public InputStream getInputStream() throws IOException { - return stream; - } - - @Override - public Iterator getFormParameterIterator() { - try { - FileUpload fup = new FileUpload(); - FileItemIterator fit = fup.getItemIterator(this); - return new IteratorDelegator(fit); - } catch (Exception iox) { - log.error("Cannot decode multipart form data stream " + iox); - throw new SLRuntimeException(iox); - } - } - - @Override - public void setInputStream(InputStream is) { - stream = is; - } - - static class IteratorDelegator implements Iterator { - - private FileItemIterator fileItemIterator; - - public IteratorDelegator(FileItemIterator fit) { - fileItemIterator = fit; - } - - @Override - public boolean hasNext() { - try { - return fileItemIterator.hasNext(); - } catch (FileUploadException e) { - log.error(e); - throw new SLRuntimeException(e); - } catch (IOException e) { - log.error(e); - throw new SLRuntimeException(e); - } - } - - @Override - public FormParameter next() { - try { - FileItemStream item = fileItemIterator.next(); - return new FormParameterImpl(item.getContentType(), - item.getFieldName(), item.openStream(), item.getHeaders()); - } catch (FileUploadException e) { - log.error(e); - throw new SLRuntimeException(e); - } catch (IOException e) { - log.error(e); - throw new SLRuntimeException(e); - } - } - - @Override - public void remove() { - throw new UnsupportedOperationException("Remove not supported"); - } - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java deleted file mode 100644 index 913259f6..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package at.gv.egiz.bku.binding; - -import java.util.Hashtable; -import java.util.Map; -import java.util.concurrent.Future; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * - * @author Clemens Orthacker - */ -public class ProcessingContext { - - public static final String BINDING_PROCESSOR = "binding.processor"; - public static final String FUTURE = "future"; - - protected static final Log log = LogFactory.getLog(ProcessingContext.class); - - protected Map properties = new Hashtable(); - - public ProcessingContext(BindingProcessor bp, Future future) { - properties.put(BINDING_PROCESSOR, bp); - properties.put(FUTURE, future); - } - - public BindingProcessor getBindingProcessor() { - return (BindingProcessor) properties.get(BINDING_PROCESSOR); - } - - public Future getFuture() { - return (Future) properties.get(FUTURE); - } - - public Object get(String key) { - return properties.get(key); - } - - public void put(String key, Object value) { - properties.put(key, value); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java deleted file mode 100644 index 6c2dcb9f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java +++ /dev/null @@ -1,26 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -/** - * Could be used to remove expired BindingProcessor objects from a BindingProcessorManager. - * - */ -public interface RemovalStrategy { - public void execute(); - public void setBindingProcessorManager(BindingProcessorManager bp); -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java deleted file mode 100644 index a23d96e8..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.binding; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.accesscontroller.SecurityManagerFacade; -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slcommands.SLCommandInvoker; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slcommands.SLSourceContext; -import at.gv.egiz.bku.slcommands.SLTargetContext; -import at.gv.egiz.bku.slexceptions.SLException; - -/** - * This class implements the entry point for the CCEs security management. - * - */ -public class SLCommandInvokerImpl implements SLCommandInvoker { - - private static Log log = LogFactory.getLog(SLCommandInvokerImpl.class); - - protected SLCommand command; - protected SLResult result; - protected SecurityManagerFacade securityManager; - - /** - * Invokes a sl command. - * - * @throws SLException - */ - public void invoke(SLSourceContext aContext) throws SLException { - if (securityManager == null) { - log.warn("Security policy not implemented yet, invoking command: " - + command); - result = command.execute(); - } else { - if (securityManager.mayInvokeCommand(command, aContext)) { - result = command.execute(); - } else { - throw new SLException(6002); - } - } - } - - public SLResult getResult(SLTargetContext aContext) throws SLException { - if (securityManager == null) { - log - .warn("Security policy not implemented yet, getting result of command: " - + command); - return result; - } else { - if (securityManager.maySendResult(command, aContext)) { - return result; - } else { - throw new SLException(6002); - } - } - } - - public void setCommand(SLCommand aCmd) { - command = aCmd; - } - - @Override - public SLCommandInvoker newInstance() { - SLCommandInvokerImpl cmdInv = new SLCommandInvokerImpl(); - cmdInv.setSecurityManager(securityManager); - return cmdInv; - } - - public SecurityManagerFacade getSecurityManager() { - return securityManager; - } - - public void setSecurityManager(SecurityManagerFacade securityManager) { - this.securityManager = securityManager; - } - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java deleted file mode 100644 index 69c659e1..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java +++ /dev/null @@ -1,58 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding; - -import java.io.InputStream; -import java.util.Iterator; -import java.util.Map; - -import org.apache.commons.fileupload.ParameterParser; - -public class XWWWFormUrlInputDecoder implements InputDecoder { - - /** - * The MIME type 'application/x-www-form-urlencoded'. - */ - public static final String CONTENT_TYPE = "application/x-www-form-urlencoded"; - - /** - * The form parameter iterator. - */ - protected XWWWFormUrlInputIterator iterator; - - @SuppressWarnings("unchecked") - @Override - public void setContentType(String contentType) { - ParameterParser pp = new ParameterParser(); - pp.setLowerCaseNames(true); - Map params = pp.parse(contentType, new char[] { ':', ';' }); - if (!params.containsKey(CONTENT_TYPE)) { - throw new IllegalArgumentException( - "not a url encoded content type specification: " + contentType); - } - } - - @Override - public Iterator getFormParameterIterator() { - return iterator; - } - - @Override - public void setInputStream(InputStream is) { - iterator = new XWWWFormUrlInputIterator(is); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java deleted file mode 100644 index 9279130d..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java +++ /dev/null @@ -1,386 +0,0 @@ -package at.gv.egiz.bku.binding; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.charset.Charset; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; - -public class XWWWFormUrlInputIterator implements Iterator { - - public static final byte NAME_VALUE_SEP = '='; - - public static final byte PARAM_SEP = '&'; - - public static final Charset UTF_8 = Charset.forName("UTF-8"); - - /** - * The default buffer size. - */ - protected static final int DEFAULT_BUFFER_SIZE = 4096; - - /** - * Are we done with parsing the input. - */ - protected boolean done = false; - - /** - * The x-www-formdata-urlencoded input stream to be parsed. - */ - protected final InputStream in; - - /** - * The buffer size. - */ - protected int bufferSize = DEFAULT_BUFFER_SIZE; - - /** - * The read buffer. - */ - protected final byte[] buf = new byte[bufferSize]; - - /** - * The read position. - */ - protected int pos; - - /** - * The number of valid bytes in the buffer; - */ - protected int count; - - /** - * The parameter returned by the last call of {@link #next()}; - */ - protected XWWWFormUrlEncodedParameter currentParameter; - - /** - * An IOException that cannot be reported immediately. - */ - protected IOException deferredIOException; - - /** - * Creates a new instance of this x-www-formdata-urlencoded input iterator - * with the given InputStream in to be parsed. - * - * @param in the InputStream to be parsed - */ - public XWWWFormUrlInputIterator(InputStream in) { - this.in = in; - } - - /* (non-Javadoc) - * @see java.util.Iterator#hasNext() - */ - @Override - public boolean hasNext() { - if (done) { - return false; - } - try { - if (currentParameter != null) { - // we have to disconnect the current parameter - // to look for further parameters - currentParameter.formParameterValue.disconnect(); - } - // fill buffer if empty - if (pos >= count) { - if ((count = in.read(buf)) == -1) { - // done - done = true; - return false; - } - pos = 0; - } - } catch (IOException e) { - deferredIOException = e; - // return true to be able to report error - return true; - } - return true; - } - - @Override - public FormParameter next() { - if (hasNext()) { - // skip separator - if (buf[pos] == PARAM_SEP) { - pos++; - } - currentParameter = new XWWWFormUrlEncodedParameter(); - return currentParameter; - } else { - throw new NoSuchElementException(); - } - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - - public class XWWWFormUrlEncodedParameter implements FormParameter { - - /** - * The list of header names. - */ - // x-www-form-urlencoded parameters do not provide headers - protected final List headers = Collections.emptyList(); - - /** - * The name of the form parameter. - */ - protected String formParameterName; - - /** - * The value of the form parameter. - */ - protected URLDecodingInputStream formParameterValue; - - public XWWWFormUrlEncodedParameter() { - // parse parameter name - URLDecodingInputStream urldec = new URLDecodingInputStream(in, NAME_VALUE_SEP); - InputStreamReader reader = new InputStreamReader(urldec, UTF_8); - try { - StringBuilder sb = new StringBuilder(); - char[] b = new char[128]; - for (int l = 0; (l = reader.read(b)) != -1;) { - sb.append(b, 0, l); - } - formParameterName = sb.toString(); - // fill buffer if empty - if (pos >= count) { - if ((count = in.read(buf)) == -1) { - throw new IOException("Invalid URL encoding."); - } - pos = 0; - } - // skip separator - pos++; - } catch (IOException e) { - deferredIOException = e; - formParameterName = ""; - } - formParameterValue = new URLDecodingInputStream(in, PARAM_SEP); - } - - @Override - public String getFormParameterContentType() { - // x-www-form-urlencoded parameters do not specify a content type - return null; - } - - @Override - public String getFormParameterName() { - return formParameterName; - } - - @Override - public InputStream getFormParameterValue() { - if (deferredIOException != null) { - final IOException e = deferredIOException; - deferredIOException = null; - return new InputStream() { - @Override - public int read() throws IOException { - throw e; - } - }; - } else { - return formParameterValue; - } - } - - @Override - public Iterator getHeaderNames() { - return headers.iterator(); - } - - @Override - public String getHeaderValue(String headerName) { - return null; - } - - } - - public class URLDecodingInputStream extends FilterInputStream { - - /** - * Has this stream already been closed. - */ - private boolean closed = false; - - /** - * Has this stream been disconnected. - */ - private boolean disconnected = false; - - /** - * Read until this byte occurs. - */ - protected final byte term; - - /** - * Creates a new instance of this URLDecodingInputStream. - * - * @param in - * @param separator - */ - protected URLDecodingInputStream(InputStream in, byte separator) { - super(in); - this.term = separator; - } - - /* (non-Javadoc) - * @see java.io.FilterInputStream#read() - */ - @Override - public int read() throws IOException { - if (closed) { - throw new IOException("The stream has already been closed."); - } - if (disconnected) { - return in.read(); - } - - if (pos >= count) { - if ((count = in.read(buf)) == -1) { - return -1; - } - pos = 0; - } if (buf[pos] == term) { - return -1; - } else if (buf[pos] == '+') { - pos++; - return ' '; - } else if (buf[pos] == '%') { - if (++pos == count) { - if ((count = in.read(buf)) == -1) { - throw new IOException("Invalid URL encoding."); - } - pos = 0; - } - int c1 = Character.digit(buf[pos], 16); - if (++pos == count) { - if ((count = in.read(buf)) == -1) { - throw new IOException("Invalid URL encoding."); - } - pos = 0; - } - int c2 = Character.digit(buf[pos], 16); - return ((c1 << 4) | c2); - } else { - return buf[pos++]; - } - } - - /* (non-Javadoc) - * @see java.io.FilterInputStream#read(byte[], int, int) - */ - @Override - public int read(byte[] b, int off, int len) throws IOException { - if (closed) { - throw new IOException("The stream has already been closed."); - } - if (disconnected) { - return in.read(b, off, len); - } - - if ((off | len | (off + len) | (b.length - (off + len))) < 0) { - throw new IndexOutOfBoundsException(); - } else if (len == 0) { - return 0; - } - - if (pos >= count) { - if ((count = in.read(buf)) == -1) { - return -1; - } - pos = 0; - } - if (buf[pos] == term) { - return -1; - } - - int l = 0; - for (;;) { - while (pos < count) { - if (l == len || buf[pos] == term) { - return l; - } else if (buf[pos] == '+') { - b[off] = ' '; - } else if (buf[pos] == '%') { - if (++pos == count) { - if ((count = in.read(buf)) == -1) { - throw new IOException("Invalid URL encoding."); - } - pos = 0; - } - int c1 = Character.digit(buf[pos], 16); - if (++pos == count) { - if ((count = in.read(buf)) == -1) { - throw new IOException("Invalid URL encoding."); - } - pos = 0; - } - int c2 = Character.digit(buf[pos], 16); - b[off] = (byte) ((c1 << 4) | c2); - } else { - b[off] = buf[pos]; - } - pos++; - off++; - l++; - } - if ((count = in.read(buf)) == -1) { - return l; - } - pos = 0; - } - } - - /** - * Disconnect from the InputStream and buffer all remaining data. - * - * @throws IOException - */ - public void disconnect() throws IOException { - if (!disconnected) { - // don't waste space for a buffer if end of stream has already been - // reached - byte[] b = new byte[1]; - if ((read(b)) != -1) { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - os.write(b); - b = new byte[1024]; - for (int l; (l = read(b, 0, b.length)) != -1;) { - os.write(b, 0, l); - } - super.in = new ByteArrayInputStream(os.toByteArray()); - } - disconnected = true; - } - } - - /* (non-Javadoc) - * @see java.io.FilterInputStream#close() - */ - @Override - public void close() throws IOException { - if (!hasNext()) { - // don't close the underlying stream until all parts are read - super.close(); - } - disconnect(); - closed = true; - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java deleted file mode 100644 index 1a22f787..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java +++ /dev/null @@ -1,61 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding.multipart; - -import java.io.IOException; -import java.io.InputStream; -import org.apache.commons.httpclient.methods.multipart.PartSource; - -/** - * InputStream source for FilePart. - * DOES NOT RETURN A CORRECT LENGTH OF THE INPUT DATA. (but we don't care, since we use chunked encoding) - * - * @author clemens - */ -public class InputStreamPartSource implements PartSource { - - protected String name; - protected InputStream data; - - public InputStreamPartSource(String name, InputStream data) { - this.name = name; - this.data = data; - } - - /** - * Just a dummy value to make Part work - * @return 42 - */ - @Override - public long getLength() { - //System.out.println("***********GETLENGTH"); - return 42; - } - - @Override - public String getFileName() { - return name; - } - - @Override - public InputStream createInputStream() throws IOException { - if (data == null) - throw new IOException("Failed to get stream for part: no data was set."); - return data; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java deleted file mode 100644 index d896ea9f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java +++ /dev/null @@ -1,71 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.binding.multipart; - -import at.gv.egiz.bku.binding.DataUrlConnection; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slcommands.SLResult.SLResultType; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.OutputStreamWriter; - -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.httpclient.methods.multipart.FilePart; -import org.apache.commons.httpclient.methods.multipart.PartSource; - -public class SLResultPart extends FilePart { - - protected SLResult slResult; - protected String encoding; - - public SLResultPart(SLResult slResult, String encoding) { - super((slResult.getResultType() == SLResultType.XML) - ? DataUrlConnection.FORMPARAM_XMLRESPONSE - : DataUrlConnection.FORMPARAM_BINARYRESPONSE, - new PartSource() { - - @Override - public long getLength() { - // may return null, as sendData() is overridden - return 0; - } - - @Override - public String getFileName() { - // return null, to prevent content-disposition header - return null; - } - - @Override - public InputStream createInputStream() throws IOException { - // may return null, as sendData() is overridden below - return null; - } - } - ); - this.slResult = slResult; - this.encoding = encoding; - } - - @Override - protected void sendData(OutputStream out) throws IOException { - slResult.writeTo(new StreamResult(new OutputStreamWriter(out, encoding)), false); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java deleted file mode 100644 index 6a95b369..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java +++ /dev/null @@ -1,13 +0,0 @@ -package at.gv.egiz.bku.conf; - -import iaik.x509.X509Certificate; - -import java.io.File; - -public interface CertValidator { - - public abstract void init(File certDir, File caDir); - - public abstract boolean isCertificateValid(String transactionId, X509Certificate[] certs); - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java deleted file mode 100644 index 3b2d1b99..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java +++ /dev/null @@ -1,107 +0,0 @@ -package at.gv.egiz.bku.conf; - -import iaik.logging.LogConfigurationException; -import iaik.logging.TransactionId; -import iaik.logging.impl.TransactionIdImpl; -import iaik.logging.LoggerConfig; -import iaik.pki.DefaultPKIConfiguration; -import iaik.pki.DefaultPKIProfile; -import iaik.pki.PKIConfiguration; -import iaik.pki.PKIException; -import iaik.pki.PKIFactory; -import iaik.pki.PKIModule; -import iaik.pki.PKIProfile; -import iaik.pki.store.certstore.CertStoreParameters; -import iaik.pki.store.certstore.directory.DefaultDirectoryCertStoreParameters; -import iaik.pki.store.truststore.DefaultTrustStoreProfile; -import iaik.pki.store.truststore.TrustStoreProfile; -import iaik.pki.store.truststore.TrustStoreTypes; -import iaik.x509.X509Certificate; - -import java.io.File; -import java.util.Date; -import java.util.Properties; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class CertValidatorImpl implements CertValidator { - - private static Log log = LogFactory.getLog(CertValidatorImpl.class); - - private PKIFactory pkiFactory; - private PKIProfile profile; - - public CertValidatorImpl() { - - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.conf.CertValidator#init(java.io.File, java.io.File) - */ - public void init(File certDir, File caDir) { - // initialize IAIK logging for PKI module - log.debug("Configuring logging for IAIK PKI module"); - iaik.logging.LogFactory.configure(new LoggerConfig() { - - @Override - public Properties getProperties() throws LogConfigurationException { - return null; - } - - @Override - public String getNodeId() { - return "pki"; - } - - @Override - public String getFactory() { - return IAIKCommonsLogFactory.class.getName(); - } - }); - - - // the parameters specifying the directory certstore - CertStoreParameters[] certStoreParameters = { new DefaultDirectoryCertStoreParameters( - "CS-001", certDir.getAbsolutePath(), true, false) }; - - // create a new PKI configuration using the certstore parameters - PKIConfiguration pkiConfig = new DefaultPKIConfiguration( - certStoreParameters); - - // Transaction ID for logging - TransactionId tid = new TransactionIdImpl("Configure-PKI"); - // get PKI factory for creating PKI module(s) - pkiFactory = PKIFactory.getInstance(); - // configure the factory - try { - pkiFactory.configure(pkiConfig, tid); - } catch (PKIException e) { - log.error("Cannot configure PKI module", e); - } - // the truststore to be used - TrustStoreProfile trustProfile = new DefaultTrustStoreProfile("TS-001", - TrustStoreTypes.DIRECTORY, caDir.getAbsolutePath()); - profile = new DefaultPKIProfile(trustProfile); - ((DefaultPKIProfile)profile).setAutoAddCertificates(true); - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.conf.CertValidator#isCertificateValid(java.lang.String, iaik.x509.X509Certificate[]) - */ - public boolean isCertificateValid(String transactionId, - X509Certificate[] certs) { - // Transaction ID for logging - TransactionId tid = new TransactionIdImpl(transactionId); - // get a PKIModule - PKIModule pkiModule; - try { - pkiModule = pkiFactory.getPKIModule(profile); - return pkiModule.validateCertificate(new Date(), certs[0], certs, null, - tid).isCertificateValid(); - } catch (PKIException e) { - log.error("Cannot validate certificate", e); - } - return false; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java deleted file mode 100644 index f813b14d..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package at.gv.egiz.bku.conf; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * BKU Common Configuration - * - * Injected to BKU Common classes as defined in mocca-conf.xml - * - * Replace at.gv.egiz.bku.conf.Configurator, - * currently only few configuration options are supported. - * - * @author Clemens Orthacker - */ -public class Configuration { - - public static final int MAX_DATAURL_HOPS_DEFAULT = 50; - public static final String IMPLEMENTATION_NAME_DEFAULT = "MOCCA"; - public static final String IMPLEMENTATION_VERSION_DEFAULT = "UNKNOWN"; - - private static final Log log = LogFactory.getLog(Configuration.class); - - private int maxDataUrlHops = -1; - private String implementationName; - private String implementationVersion; - - public void setMaxDataUrlHops(int maxDataUrlHops) { - this.maxDataUrlHops = maxDataUrlHops; - } - - /** - * Defines the maximum number of dataurl connects that are allowed within a - * single SL Request processing. - */ - public int getMaxDataUrlHops() { - if (maxDataUrlHops < 0) { - log.warn("maxDataUrlHops not configured, using default: " + MAX_DATAURL_HOPS_DEFAULT); - return MAX_DATAURL_HOPS_DEFAULT; - } - return maxDataUrlHops; - } - - /** - * @return the implementationName - */ - public String getImplementationName() { - if (implementationName == null) { - log.info("implementationName not configured, using default: " + IMPLEMENTATION_NAME_DEFAULT); - return "MOCCA"; - } - return implementationName; - } - - /** - * @param implementationName the implementationName to set - */ - public void setImplementationName(String implementationName) { - this.implementationName = implementationName; - } - - /** - * @return the implementationVersion - */ - public String getImplementationVersion() { - if (implementationName == null) { - log.info("implementationName not configured, using default: " + IMPLEMENTATION_VERSION_DEFAULT); - return IMPLEMENTATION_VERSION_DEFAULT; - } - return implementationVersion; - } - - /** - * @param implementationVersion the implementationVersion to set - */ - public void setImplementationVersion(String implementationVersion) { - this.implementationVersion = implementationVersion; - } - - - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java deleted file mode 100644 index 50f5d2b4..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java +++ /dev/null @@ -1,467 +0,0 @@ -package at.gv.egiz.bku.conf; - -import iaik.security.ecc.provider.ECCProvider; -import iaik.security.provider.IAIK; -import iaik.xml.crypto.XSecProvider; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.security.GeneralSecurityException; -import java.security.InvalidAlgorithmParameterException; -import java.security.NoSuchAlgorithmException; -import java.security.Provider; -import java.security.Security; -import java.security.Provider.Service; -import java.security.cert.CertStore; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.CollectionCertStoreParameters; -import java.security.cert.LDAPCertStoreParameters; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.jar.Attributes; -import java.util.jar.Manifest; - -import javax.net.ssl.HostnameVerifier; -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.KeyManager; -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLSession; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.binding.DataUrl; -import at.gv.egiz.bku.slcommands.impl.xsect.DataObject; -import at.gv.egiz.bku.slcommands.impl.xsect.STALProvider; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; -import javax.net.ssl.SSLSocketFactory; - -public abstract class Configurator { - - private Log log = LogFactory.getLog(Configurator.class); - - public final static String USERAGENT_CONFIG_P = "UserAgent"; - public static final String DATAURLCONNECTION_CONFIG_P = "DataURLConnectionImplClass"; - - public static final String USERAGENT_DEFAULT = "citizen-card-environment/1.2 MOCCA/UNKNOWN"; - public static final String USERAGENT_BASE = "citizen-card-environment/1.2 MOCCA/"; - - public static final String SIGNATURE_LAYOUT = "SignatureLayout"; - - protected Properties properties; - - protected CertValidator certValidator; - protected String signaturLayoutVersion; - - protected Configurator() { - } - - protected abstract File getCertDir(); - - protected abstract File getCADir(); - - protected abstract InputStream getManifest(); - - private X509Certificate[] getCACerts() throws IOException, - CertificateException { - List caCerts = new ArrayList(); - File caDir = getCADir(); - if (caDir != null) { - if (!caDir.isDirectory()) { - log.error("Expecting directory as SSL.caDirectory parameter"); - throw new SLRuntimeException( - "Expecting directory as SSL.caDirectory parameter"); - } - log.info("loading trustStore from " + caDir.getAbsolutePath()); - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - for (File f : caDir.listFiles()) { - try { - FileInputStream fis = new FileInputStream(f); - X509Certificate cert = (X509Certificate) cf.generateCertificate(fis); - fis.close(); - log.debug("Adding trusted cert " + cert.getSubjectDN()); - caCerts.add(cert); - } catch (Exception e) { - log.error("Cannot add trusted ca", e); - } - } - return caCerts.toArray(new X509Certificate[caCerts.size()]); - } else { - log.warn("No CA certificates configured"); - } - return null; - } - - protected List getCertstore() throws IOException, - CertificateException, InvalidAlgorithmParameterException, - NoSuchAlgorithmException { - List resultList = new ArrayList(); - File certDir = getCertDir(); - if (certDir != null) { - if (!certDir.isDirectory()) { - log.error("Expecting directory as SSL.certDirectory parameter"); - throw new SLRuntimeException( - "Expecting directory as SSL.certDirectory parameter"); - } - log.info("loading certStore from " + certDir.getAbsolutePath()); - List certCollection = new LinkedList(); - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - for (File f : certDir.listFiles()) { - try { - FileInputStream fis = new FileInputStream(f); - X509Certificate cert = (X509Certificate) cf.generateCertificate(fis); - certCollection.add(cert); - fis.close(); - log - .trace("Added following cert to certstore: " - + cert.getSubjectDN()); - } catch (Exception ex) { - log.error("Cannot add certificate", ex); - } - } - CollectionCertStoreParameters csp = new CollectionCertStoreParameters( - certCollection); - resultList.add(CertStore.getInstance("Collection", csp)); - log.info("Added collection certstore"); - } else { - log.warn("No certstore directory configured"); - } - String ldapHost = getProperty("SSL.ldapServer"); - if ((ldapHost != null) && (!"".equals(ldapHost))) { - String ldapPortString = getProperty("SSL.ldapPort"); - int ldapPort = 389; - if (ldapPortString != null) { - try { - ldapPort = Integer.parseInt(ldapPortString); - } catch (NumberFormatException nfe) { - log.error("Invalid ldap port, using default 389"); - } - } else { - log.warn("ldap port not specified, using default 389"); - } - LDAPCertStoreParameters ldapParams = new LDAPCertStoreParameters( - ldapHost, ldapPort); - resultList.add(CertStore.getInstance("LDAP", ldapParams)); - log.info("Added LDAP certstore"); - } - return resultList; - } - - protected void configUrlConnections() { - HttpsURLConnection.setFollowRedirects(false); - HttpURLConnection.setFollowRedirects(false); - } - - protected void configureProviders() { - log.debug("Registering security providers"); - - IAIK iaikProvider = new IAIK(); - if (Security.getProvider(iaikProvider.getName()) == null) { - // register IAIK provider at first position - Security.insertProviderAt(iaikProvider, 1); - } else { - // IAIK provider already registered - log.info("Provider " + iaikProvider.getName() + " already registered."); - } - - ECCProvider eccProvider = new ECCProvider(false); - if (Security.getProvider(eccProvider.getName()) == null) { - // register ECC Provider at second position - Security.insertProviderAt(eccProvider, 2); - } else { - // ECC Provider already registered - log.info("Provider " + eccProvider.getName() + " already registered."); - } - - // registering STALProvider as delegation provider for XSECT - STALProvider stalProvider = new STALProvider(); - if (Security.getProvider(stalProvider.getName()) == null) { - // register STAL provider - Set services = stalProvider.getServices(); - StringBuilder sb = new StringBuilder(); - for (Service service : services) { - String algorithm = service.getType() + "." + service.getAlgorithm(); - XSecProvider.setDelegationProvider(algorithm, stalProvider.getName()); - sb.append("\n" + algorithm); - } - log - .debug("Registered STALProvider as XSecProvider delegation provider for the following services : " - + sb.toString()); - - Security.addProvider(stalProvider); - } else { - // STAL Provider already registered - log.info("Provider " + stalProvider.getName() + " already registered."); - } - - if (Security.getProvider(XSecProvider.NAME) == null) { - // register XML Security provider - XSecProvider.addAsProvider(false); - } else { - log.info("Provider " + XSecProvider.NAME + " already registered."); - } - - if (log.isDebugEnabled()) { - StringBuilder sb = new StringBuilder(); - sb.append("Registered providers: "); - int i = 1; - for (Provider prov : Security.getProviders()) { - sb.append((i++) + ". : " + prov); - } - log.debug(sb.toString()); - } - } - - protected void configViewer() { - String bv = properties.getProperty("ValidateHashDataInputs"); - if (bv != null) { - DataObject.enableHashDataInputValidation(Boolean.parseBoolean(bv)); - } else { - log.warn("ValidateHashDataInputs not set, falling back to default"); - } - } - - public void configureSingatureLayoutVersion() { - if (properties.get(SIGNATURE_LAYOUT) == null) { - try { - String classContainer = Configurator.class.getProtectionDomain() - .getCodeSource().getLocation().toString(); - URL manifestUrl = new URL("jar:" + classContainer - + "!/META-INF/MANIFEST.MF"); - Manifest manifest = new Manifest(manifestUrl.openStream()); - Attributes att = manifest.getMainAttributes(); - String layout = null; - if (att != null) { - layout = att.getValue(SIGNATURE_LAYOUT); - } - if (layout != null) { - log.info("setting SignatureLayout header to " + layout); - properties.put(SIGNATURE_LAYOUT, layout); - } else { - log.warn("no SignatureLayout version defined"); - } - } catch (Exception ex) { - log.warn("Cannot read manifest", ex); - } - } - } - - public void configureNetwork() { - String proxy = getProperty("HTTPProxyHost"); - String portString = getProperty("HTTPProxyPort"); - if ((proxy == null) || (proxy.equals(""))) { - log.info("No proxy configured"); - } else { - log.info("Setting proxy to: " + proxy + ":" + portString); - System.setProperty("proxyHost", proxy); - System.setProperty("proxyPort", portString); - } - String timeout = getProperty("DefaultSocketTimeout"); - if ((timeout != null) && (!timeout.equals(""))) { - System.setProperty("sun.net.client.defaultConnectTimeout", timeout); - } - } - - public void configureVersion() { - if (properties.getProperty(USERAGENT_CONFIG_P) == null) { - Properties p = new Properties(); - try { - InputStream is = getManifest(); - if (is != null) { - p.load(getManifest()); - String version = p.getProperty("Implementation-Build"); - if (version == null) { - version="UNKNOWN"; - } - properties.setProperty(USERAGENT_CONFIG_P, USERAGENT_BASE + version); - log.debug("Setting user agent to: " - + properties.getProperty(USERAGENT_CONFIG_P)); - } else { - log.warn("Failed to read manifest, setting user-agent to " + USERAGENT_DEFAULT); - properties.setProperty(USERAGENT_CONFIG_P, USERAGENT_DEFAULT); - } - } catch (IOException e) { - log.error(e); - } - } else { - log.info("using configured user agent " + properties.getProperty(USERAGENT_CONFIG_P)); - } - } - - /** - * TODO cleanup configuration (read MANIFEST, DataURLconfig,...) - */ - public void configure() { - configureProviders(); - configUrlConnections(); - configViewer(); - configureSSL(); - configureVersion(); - configureSingatureLayoutVersion(); - configureNetwork(); - //after configureVersion() and configureSignatureLayoutVersion() - DataUrl.setConfiguration(properties); - } - - public void setConfiguration(Properties props) { - this.properties = props; - } - - public String getProperty(String key) { - if (properties != null) { - return properties.getProperty(key); - } - return null; - } - - public void configureSSL() { - X509Certificate[] caCerts = null; - try { - caCerts = getCACerts(); - } catch (Exception e1) { - log.error("Cannot load CA certificates", e1); - } - String disableAll = getProperty("SSL.disableAllChecks"); - String disableHostnameVerification = getProperty("SSL.disableHostnameVerification"); - try { - KeyManager[] km = null; - SSLContext sslCtx = SSLContext - .getInstance(getProperty("SSL.sslProtocol")); - if ((disableAll != null) && (Boolean.parseBoolean(disableAll))) { - log.warn("--------------------------------------"); - log.warn(" Disabling SSL Certificate Validation "); - log.warn("--------------------------------------"); - - sslCtx.init(km, - new TrustManager[] { new MyAlwaysTrustManager(caCerts) }, null); - } else { - MyPKITrustManager pkixTM = new MyPKITrustManager(certValidator, - getCertDir(), getCADir(), caCerts); - sslCtx.init(km, new TrustManager[] { pkixTM }, null); - } - DataUrl.setSSLSocketFactory(sslCtx.getSocketFactory()); - URLDereferencer.getInstance().setSSLSocketFactory( - sslCtx.getSocketFactory()); - } catch (Exception e) { - log.error("Cannot configure SSL", e); - } - if ((disableAll != null && Boolean.parseBoolean(disableAll)) - || (disableHostnameVerification != null && Boolean - .parseBoolean(disableHostnameVerification))) { - log.warn("---------------------------------"); - log.warn(" Disabling Hostname Verification "); - log.warn("---------------------------------"); - DataUrl.setHostNameVerifier(new HostnameVerifier() { - @Override - public boolean verify(String hostname, SSLSession session) { - return true; - } - }); - URLDereferencer.getInstance().setHostnameVerifier(new HostnameVerifier() { - @Override - public boolean verify(String hostname, SSLSession session) { - return true; - } - }); - } - } - - public void setCertValidator(CertValidator certValidator) { - this.certValidator = certValidator; - } - - private static class MyPKITrustManager implements X509TrustManager { - private static Log log = LogFactory.getLog(MyPKITrustManager.class); - - private CertValidator certValidator; - private X509Certificate[] trustedCerts; - - public MyPKITrustManager(CertValidator cv, File certStore, File trustStore, - X509Certificate[] trustedCerts) { - certValidator = cv; - certValidator.init(certStore, trustStore); - this.trustedCerts = trustedCerts; - } - - @Override - public void checkClientTrusted(X509Certificate[] chain, String authType) - throws CertificateException { - log.error("Did not expect this method to get called"); - throw new CertificateException("Method not implemented"); - } - - private static iaik.x509.X509Certificate[] convertCerts( - X509Certificate[] certs) throws GeneralSecurityException { - iaik.x509.X509Certificate[] retVal = new iaik.x509.X509Certificate[certs.length]; - int i = 0; - for (X509Certificate cert : certs) { - if (cert instanceof iaik.x509.X509Certificate) { - retVal[i++] = (iaik.x509.X509Certificate) cert; - } else { - retVal[i++] = new iaik.x509.X509Certificate(cert.getEncoded()); - } - } - return retVal; - } - - @Override - public void checkServerTrusted(X509Certificate[] chain, String authType) - throws CertificateException { - try { - boolean valid = certValidator.isCertificateValid(Thread.currentThread() - .getName(), convertCerts(chain)); - if (!valid) { - throw new CertificateException("Certificate not valid"); - } - } catch (GeneralSecurityException e) { - throw new CertificateException(e); - } - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return trustedCerts; - } - } - - private static class MyAlwaysTrustManager implements X509TrustManager { - private static Log log = LogFactory.getLog(MyAlwaysTrustManager.class); - private X509Certificate[] trustedCerts; - - public MyAlwaysTrustManager(X509Certificate[] trustedCerts) { - this.trustedCerts = trustedCerts; - } - - @Override - public void checkClientTrusted(X509Certificate[] arg0, String arg1) - throws CertificateException { - log.error("Did not expect this method to get called"); - throw new CertificateException("Method not implemented"); - } - - @Override - public void checkServerTrusted(X509Certificate[] certs, String arg1) - throws CertificateException { - log.warn("-------------------------------------"); - log.warn("SSL Certificate Validation Disabled !"); - log.warn("-------------------------------------"); - } - - @Override - public X509Certificate[] getAcceptedIssuers() { - return trustedCerts; - } - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java deleted file mode 100644 index 1b7dd189..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java +++ /dev/null @@ -1,144 +0,0 @@ -/** - * - */ -package at.gv.egiz.bku.conf; - -import iaik.logging.Log; -import iaik.logging.TransactionId; - -/** - * @author mcentner - * - */ -public class IAIKCommonsLog implements Log { - - /** - * The id that will be written to the log if the transactionid == null - */ - public final static String NO_ID = "Null-ID"; - - protected org.apache.commons.logging.Log commonsLog; - - protected String nodeId; - - public IAIKCommonsLog(org.apache.commons.logging.Log log) { - this.commonsLog = log; - } - - /* (non-Javadoc) - * @see iaik.logging.Log#debug(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable) - */ - @Override - public void debug(TransactionId transactionId, Object message, Throwable t) { - if (commonsLog.isDebugEnabled()) { - commonsLog.debug(nodeId + ": " - + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": " - + message, t); - } - } - - /* (non-Javadoc) - * @see iaik.logging.Log#info(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable) - */ - @Override - public void info(TransactionId transactionId, Object message, Throwable t) { - if (commonsLog.isInfoEnabled()) { - commonsLog.info(nodeId + ": " - + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": " - + message, t); - } - } - - /* (non-Javadoc) - * @see iaik.logging.Log#warn(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable) - */ - @Override - public void warn(TransactionId transactionId, Object message, Throwable t) { - if (commonsLog.isWarnEnabled()) { - commonsLog.warn(nodeId + ": " - + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": " - + message, t); - } - } - - /* (non-Javadoc) - * @see iaik.logging.Log#error(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable) - */ - @Override - public void error(TransactionId transactionId, Object message, Throwable t) { - if (commonsLog.isErrorEnabled()) { - commonsLog.error(nodeId + ": " - + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": " - + message, t); - } - } - - /* (non-Javadoc) - * @see iaik.logging.Log#fatal(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable) - */ - @Override - public void fatal(TransactionId transactionId, Object message, Throwable t) { - if (commonsLog.isFatalEnabled()) { - commonsLog.fatal(nodeId + ": " - + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": " - + message, t); - } - } - - /* (non-Javadoc) - * @see iaik.logging.Log#setNodeId(java.lang.String) - */ - @Override - public void setNodeId(String nodeId) { - this.nodeId = nodeId; - } - - /* (non-Javadoc) - * @see iaik.logging.Log#getNodeId() - */ - @Override - public String getNodeId() { - return nodeId; - } - - /* (non-Javadoc) - * @see iaik.logging.Log#isDebugEnabled() - */ - @Override - public boolean isDebugEnabled() { - return commonsLog.isDebugEnabled(); - } - - /* (non-Javadoc) - * @see iaik.logging.Log#isInfoEnabled() - */ - @Override - public boolean isInfoEnabled() { - return commonsLog.isInfoEnabled(); - } - - /* (non-Javadoc) - * @see iaik.logging.Log#isWarnEnabled() - */ - @Override - public boolean isWarnEnabled() { - return commonsLog.isWarnEnabled(); - } - - /* (non-Javadoc) - * @see iaik.logging.Log#isErrorEnabled() - */ - @Override - public boolean isErrorEnabled() { - return commonsLog.isErrorEnabled(); - } - - /* (non-Javadoc) - * @see iaik.logging.Log#isFatalEnabled() - */ - @Override - public boolean isFatalEnabled() { - return commonsLog.isFatalEnabled(); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java deleted file mode 100644 index 14e2c757..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java +++ /dev/null @@ -1,59 +0,0 @@ -/** - * - */ -package at.gv.egiz.bku.conf; - -import org.apache.commons.logging.impl.WeakHashtable; - -import iaik.logging.Log; -import iaik.logging.LogConfigurationException; -import iaik.logging.LogFactory; - -/** - * @author mcentner - * - */ -public class IAIKCommonsLogFactory extends LogFactory { - - protected WeakHashtable instances = new WeakHashtable(); - - /* (non-Javadoc) - * @see iaik.logging.LogFactory#getInstance(java.lang.String) - */ - @Override - public Log getInstance(String name) throws LogConfigurationException { - org.apache.commons.logging.Log commonsLog = org.apache.commons.logging.LogFactory.getLog(name); - Log log = (Log) instances.get(commonsLog); - if (log == null) { - log = new IAIKCommonsLog(commonsLog); - log.setNodeId(node_id_); - instances.put(commonsLog, log); - } - return log; - } - - /* (non-Javadoc) - * @see iaik.logging.LogFactory#getInstance(java.lang.Class) - */ - @SuppressWarnings("unchecked") - @Override - public Log getInstance(Class clazz) throws LogConfigurationException { - org.apache.commons.logging.Log commonsLog = org.apache.commons.logging.LogFactory.getLog(clazz); - Log log = (Log) instances.get(commonsLog); - if (log == null) { - log = new IAIKCommonsLog(commonsLog); - log.setNodeId(node_id_); - instances.put(commonsLog, log); - } - return log; - } - - /* (non-Javadoc) - * @see iaik.logging.LogFactory#release() - */ - @Override - public void release() { - instances.clear(); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java deleted file mode 100644 index 014b7fd7..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java +++ /dev/null @@ -1,21 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public class AccessControlInvocation implements - at.gv.egiz.bku.slcommands.InvocationStrategy { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java deleted file mode 100644 index 2d87c39f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java +++ /dev/null @@ -1,25 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLRequestException; - -public interface CreateXMLSignatureCommand extends SLCommand { - - public void prepareXMLSignature() throws SLCommandException, SLRequestException; -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java deleted file mode 100644 index 4bc2820b..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface CreateXMLSignatureResult extends SLResult { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java deleted file mode 100644 index 5d52c0ea..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface ErrorResult extends SLResult { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java deleted file mode 100644 index 19099b63..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package at.gv.egiz.bku.slcommands; - -/** - * - * @author Clemens Orthacker - */ -public interface GetStatusCommand extends SLCommand { - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java deleted file mode 100644 index c5518f51..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package at.gv.egiz.bku.slcommands; - -/** - * - * @author Clemens Orthacker - */ -public interface GetStatusResult extends SLResult { - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java deleted file mode 100644 index 73fddf1f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java +++ /dev/null @@ -1,28 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface InfoboxReadCommand extends SLCommand { - public String getInfoboxIdentifier(); - - /** - * Convenience method to get the domain identifier if the infobox - * referes to a Identitylink. - * @return the domain id or null if the Infobox is not of type Identitylink or no domain parameter was specified - */ - public String getIdentityLinkDomainId(); -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java deleted file mode 100644 index c6a51362..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface InfoboxReadResult extends SLResult { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java deleted file mode 100644 index c2974785..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java +++ /dev/null @@ -1,23 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface InfoboxUpdateCommand extends SLCommand { - - public String getInfoboxIdentifier(); - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java deleted file mode 100644 index d180facf..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java +++ /dev/null @@ -1,21 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface InfoboxUpdateResult extends SLResult { - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java deleted file mode 100644 index 6b410fac..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface InvocationStrategy { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java deleted file mode 100644 index 0651f882..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface NullOperationCommand extends SLCommand { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java deleted file mode 100644 index c36c879e..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java +++ /dev/null @@ -1,20 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -public interface NullOperationResult extends SLResult { -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java deleted file mode 100644 index a8625946..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import at.gv.egiz.bku.slexceptions.SLCommandException; - -public interface SLCommand { - - public final String NAMESPACE_URI = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#"; - - public String getName(); - - public void init(SLCommandContext aCtx, Object aUnmarshalledRequest) throws SLCommandException; - - public SLResult execute(); - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java deleted file mode 100644 index 5af2afac..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java +++ /dev/null @@ -1,55 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import java.util.Locale; - -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; -import at.gv.egiz.stal.STAL; - -public class SLCommandContext { - - private STAL stal; - private URLDereferencerContext urlDerefCtx; - - private Locale locale; - - public void setSTAL(STAL aStal) { - this.stal = aStal; - } - - public void setURLDereferencerContext(URLDereferencerContext aCtx) { - this.urlDerefCtx = aCtx; - } - - public STAL getSTAL() { - return stal; - } - - public URLDereferencerContext getURLDereferencerContext() { - return urlDerefCtx; - } - - public Locale getLocale() { - return locale; - } - - public void setLocale(Locale locale) { - this.locale = locale; - } - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java deleted file mode 100644 index 6e84867e..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java +++ /dev/null @@ -1,395 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import java.io.IOException; -import java.net.URL; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.XMLConstants; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.UnmarshalException; -import javax.xml.bind.Unmarshaller; -import javax.xml.bind.ValidationEvent; -import javax.xml.bind.ValidationEventLocator; -import javax.xml.namespace.QName; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamSource; -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.xml.sax.SAXException; -import org.xml.sax.SAXParseException; - -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; -import at.gv.egiz.bku.slexceptions.SLRequestException; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.slexceptions.SLVersionException; -import at.gv.egiz.bku.utils.DebugReader; -import at.gv.egiz.slbinding.RedirectEventFilter; -import at.gv.egiz.slbinding.RedirectUnmarshallerListener; -import at.gv.egiz.validation.ReportingValidationEventHandler; - -public class SLCommandFactory { - - /** - * Schema files required for Security Layer command validation. - */ - public static final String[] SCHEMA_FILES = new String[]{ - "at/gv/egiz/bku/slcommands/schema/xml.xsd", - "at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd", - "at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd", - "at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd", - "at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd" - }; - /** - * Logging facility. - */ - static Log log = LogFactory.getLog(SLCommandFactory.class); - /** - * The instance returned by {@link #getInstance()}. - */ - private static SLCommandFactory instance; - /** - * Schema for Security Layer command validation. - */ - private Schema slSchema; - /** - * The JAXBContext. - */ - private JAXBContext jaxbContext; - /** - * The map of : to implementation class of the - * corresponding {@link SLCommand}. - */ - private Map> slRequestTypeMap = new HashMap>(); - - /** - * The mapping of a requests's qualified name to a concrete command factories. - */ - private Map slCommandFactories = new HashMap(); - - /** - * Configures the singleton instance with command implementations - * @param commandImplMap - * @throws ClassNotFoundException - */ - @SuppressWarnings("unchecked") - public void setCommandImpl(Map commandImplMap) throws ClassNotFoundException { - ClassLoader cl = getClass().getClassLoader(); - for (String key : commandImplMap.keySet()) { - Class impl = (Class) cl.loadClass(commandImplMap.get(key)); - log.debug("Registering sl command implementation for :"+key+ "; implementation class: "+impl.getCanonicalName()); - slRequestTypeMap.put(key, impl); - } - } - - public void setConcreteFactories(Map factories) { - if (log.isDebugEnabled()) { - StringBuilder sb = new StringBuilder(); - sb.append("Registered sl command factory for"); - for (QName qname : factories.keySet()) { - sb.append("\n " + qname + " : " + factories.get(qname).getClass()); - } - log.debug(sb); - } - slCommandFactories = factories; - } - - /** - * Register an {@link SLCommand} implementation class of a Security Layer - * command with the given namespaceUri and localname - * . - * - * @param namespaceUri - * the namespace URI of the Security Layer command - * @param localname - * the localname of the Security Layer command - * @param slCommandClass - * the implementation class, or null to deregister a - * currently registered class - */ - public void setImplClass(String namespaceUri, String localname, - Class slCommandClass) { - if (slCommandClass != null) { - slRequestTypeMap.put(namespaceUri + ":" + localname, slCommandClass); - } else { - slRequestTypeMap.remove(namespaceUri + ":" + localname); - } - } - - /** - * Returns the implementation class of an {@link SLCommand} with the given - * name, or null if no such class is registered. - * - * @param name - * the QName of the Security Layer command - * @return the implementation class, or null if no class is - * registered for the given name - */ - public Class getImplClass(QName name) { - String namespaceURI = name.getNamespaceURI(); - String localPart = name.getLocalPart(); - return slRequestTypeMap.get(namespaceURI + ":" + localPart); - } - - /** - * Sets the schema to validate Security Layer commands with. - * - * @param slSchema the schema to validate Security Layer commands with - */ - public void setSLSchema(Schema slSchema) { - this.slSchema = slSchema; - } - - /** - * @return the jaxbContext - */ - public JAXBContext getJaxbContext() { - ensureJaxbContext(); - return jaxbContext; - } - - /** - * @param jaxbContext the jaxbContext to set - */ - public void setJaxbContext(JAXBContext jaxbContext) { - this.jaxbContext = jaxbContext; - } - - /** - * Initialize the JAXBContext. - */ - private synchronized void ensureJaxbContext() { - if (jaxbContext == null) { - try { - String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName(); - String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName(); - String cardChannelPkg = at.buergerkarte.namespaces.cardchannel.ObjectFactory.class.getPackage().getName(); - String slPkgLegacy1_0 = at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory.class.getPackage().getName(); - String slPkgLegacy1_1 = at.buergerkarte.namespaces.securitylayer._20020831_.ObjectFactory.class.getPackage().getName(); - setJaxbContext(JAXBContext.newInstance(slPkg + ":" + xmldsigPkg + ":" + cardChannelPkg - + ":" + slPkgLegacy1_0 + ":" + slPkgLegacy1_1)); - } catch (JAXBException e) { - log.error("Failed to setup JAXBContext security layer request.", e); - throw new SLRuntimeException(e); - } - } - } - - /** - * Initialize the security layer schema. - */ - private synchronized void ensureSchema() { - if (slSchema == null) { - try { - SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); - ClassLoader cl = SLCommandFactory.class.getClassLoader(); - Source[] sources = new Source[SCHEMA_FILES.length]; - for (int i = 0; i < SCHEMA_FILES.length; i++) { - String schemaFile = SCHEMA_FILES[i]; - URL schemaURL = cl.getResource(schemaFile); - if (schemaURL == null) { - throw new SLRuntimeException("Failed to load schema file " + schemaFile + "."); - } - log.debug("Schema location: " + schemaURL); - sources[i] = new StreamSource(schemaURL.openStream()); - } - Schema schema = schemaFactory.newSchema(sources); - log.debug("Schema successfully created."); - setSLSchema(schema); - } catch (SAXException e) { - log.error("Failed to load security layer schema.", e); - throw new SLRuntimeException("Failed to load security layer schema.", e); - } catch (IOException e) { - log.error("Failed to load security layer schema.", e); - throw new SLRuntimeException("Failed to load security layer schema.", e); - } - - } - } - - /** - * Get an instance of the SLCommandFactory. - */ - public synchronized static SLCommandFactory getInstance() { - if (instance == null) { - instance = new SLCommandFactory(); - instance.ensureJaxbContext(); - instance.ensureSchema(); - } - return instance; - } - - /** - * Private constructor used by {@link #getInstance()}. - */ - private SLCommandFactory() { - } - - /** - * Unmarshalls from the given source. - * - * @see Unmarshaller#unmarshal(Source) - * - * Note:Could replace JAXB's unmarshal-time validation engine (see commented code), however, - * we need a redirect filter. - * - * @param source - * the source to unmarshal from - * @return the object returned by {@link Unmarshaller#unmarshal(Source)} - * @throws SLRequestException - * if unmarshalling fails - * @throws SLRuntimeException - * if an unexpected error occurs configuring the unmarshaller or if - * unmarshalling fails with an unexpected error - */ - protected Object unmarshal(Source source) throws SLRuntimeException, - SLRequestException { - - Object object; - ReportingValidationEventHandler validationEventHandler = new ReportingValidationEventHandler(); - try { - - XMLInputFactory inputFactory = XMLInputFactory.newInstance(); - XMLEventReader eventReader = inputFactory.createXMLEventReader(source); - RedirectEventFilter redirectEventFilter = new RedirectEventFilter(); - XMLEventReader filteredReader = inputFactory.createFilteredReader(eventReader, redirectEventFilter); - - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - unmarshaller.setListener(new RedirectUnmarshallerListener(redirectEventFilter)); - if (slSchema != null) { - unmarshaller.setSchema(slSchema); - } - log.trace("Before unmarshal()."); - unmarshaller.setEventHandler(validationEventHandler); - object = unmarshaller.unmarshal(filteredReader); - log.trace("After unmarshal()."); - } catch (UnmarshalException e) { - if (log.isDebugEnabled()) { - log.debug("Failed to unmarshall security layer request.", e); - } else { - log.info("Failed to unmarshall security layer request." + e.getMessage()); - } - if (validationEventHandler.getErrorEvent() != null) { - // Validation Error - ValidationEvent errorEvent = validationEventHandler.getErrorEvent(); - ValidationEventLocator locator = errorEvent.getLocator(); - throw new SLRequestException(3002, - SLExceptionMessages.EC3002_INVALID, new Object[]{errorEvent.getMessage()}); - } - Throwable cause = e.getCause(); - if (cause instanceof SAXParseException) { - throw new SLRequestException(3000, - SLExceptionMessages.EC3000_UNCLASSIFIED, new Object[]{cause.getMessage()}); - } else { - throw new SLRequestException(3000, - SLExceptionMessages.EC3000_UNCLASSIFIED, new Object[]{e}); - } - } catch (JAXBException e) { - // unexpected error - log.error("Failed to unmarshall security layer request.", e); - throw new SLRuntimeException(e); - } catch (XMLStreamException e) { - // unexpected error - log.error("Failed to unmarshall security layer request.", e); - throw new SLRuntimeException(e); - } - - return object; - - } - - /** - * Creates a new SLCommand from the given source and - * context. - * - * @param source - * the Source to unmarshall from - * @param context - * the context for the created SLCommand - * @return the SLCommand unmarshalled from the given - * source - * @throws SLRequestException - * if unmarshalling fails - * @throws SLCommandException - * if command ist not supported - * @throws SLRuntimeException - * if an unexpected error occurs configuring the unmarshaller, if - * unmarshalling fails with an unexpected error or if the - * corresponding SLCommand could not be instantiated - * @throws SLVersionException - */ - @SuppressWarnings("unchecked") - public SLCommand createSLCommand(Source source, SLCommandContext context) - throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException { - - DebugReader dr = null; - if (log.isTraceEnabled() && source instanceof StreamSource) { - StreamSource streamSource = (StreamSource) source; - if (streamSource.getReader() != null) { - dr = new DebugReader(streamSource.getReader(), "SLCommand unmarshalled from:\n"); - streamSource.setReader(dr); - } - } - - Object object; - try { - object = unmarshal(source); - } catch (SLRequestException e) { - throw e; - } finally { - if (dr != null) { - log.trace(dr.getCachedString()); - } - } - - if (!(object instanceof JAXBElement)) { - // invalid request - log.info("Invalid security layer request. " + object.toString()); - throw new SLRequestException(3002, SLExceptionMessages.EC3002_INVALID, - new Object[]{object.toString()}); - } - - QName qName = ((JAXBElement) object).getName(); - if (!SLCommand.NAMESPACE_URI.equals(qName.getNamespaceURI())) { - // security layer request version not supported - log.info("Unsupported security layer request version : " + qName.getNamespaceURI()); - throw new SLVersionException(qName.getNamespaceURI()); - } - - AbstractSLCommandFactory concreteFactory = slCommandFactories.get(qName); - if (concreteFactory == null) { - // command not supported - log.info("Unsupported command received: " + qName.toString()); - throw new SLCommandException(4011, - SLExceptionMessages.EC4011_NOTIMPLEMENTED, new Object[]{qName.toString()}); - } - - return concreteFactory.createSLCommand(context, (JAXBElement) object); - - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java deleted file mode 100644 index c28288c9..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java +++ /dev/null @@ -1,46 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import at.gv.egiz.bku.slexceptions.SLCanceledException; -import at.gv.egiz.bku.slexceptions.SLException; - -public interface SLCommandInvoker { - - /** - * - * @param aContext - * @throws SLCanceledException if the security management prevents execution of this command - */ - public void invoke(SLSourceContext aContext) throws SLException; - - /** - * - * @param aContext - * @return - * @throws SLCanceledException if the security management prevents execution of this command - */ - public SLResult getResult(SLTargetContext aContext) throws SLException; - - public void setCommand(at.gv.egiz.bku.slcommands.SLCommand aCmd); - - /** - * Prototype creation - * @return - */ - public SLCommandInvoker newInstance(); -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java deleted file mode 100644 index e0a375cf..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java +++ /dev/null @@ -1,172 +0,0 @@ -/* -* Copyright 2009 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.marshal.MarshallerFactory; - -public class SLMarshallerFactory { - - static Log log = LogFactory.getLog(SLMarshallerFactory.class); - - /** - * The JAXBContext used for result marshaling. - *

- * Note: Different contexts are used for marshaling and unmarshaling of - * security layer requests and responses to avoid propagation of namespace - * declarations of legacy namespaces into marshaled results. - *

- * @see #jaxbContextLegacy - */ - protected static JAXBContext context; - - /** - * The JAXBContext used for marshaling of of results in the legacy namespace. - */ - protected static JAXBContext legacyContext; - - // ------------------- initialization on demand idiom ------------------- - // see http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom - // ---------------------------------------------------------------------- - - /** - * Private constructor called by {@link SLMarshallerFactoryInstanceHolder}. - */ - private SLMarshallerFactory() { - // context is initialized immediately while the legacy context is initialized only on demand - try { - String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName(); - String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName(); - String cardChannelPkg = at.buergerkarte.namespaces.cardchannel.ObjectFactory.class.getPackage().getName(); - context = JAXBContext.newInstance(slPkg + ":" + xmldsigPkg + ":" + cardChannelPkg); - } catch (JAXBException e) { - log.error("Failed to setup JAXBContext security layer request.", e); - throw new SLRuntimeException(e); - } - } - - /** - * The lazy instance holder for this SLMarshallerFactory. - */ - private static class SLMarshallerFactoryInstanceHolder { - /** - * The instance returned by {@link SLMarshallerFactory#getInstance()} - */ - private static final SLMarshallerFactory instance = new SLMarshallerFactory(); - } - - /** - * Get an instance of the SLMarshallerFactory. - */ - public static SLMarshallerFactory getInstance() { - return SLMarshallerFactoryInstanceHolder.instance; - } - - // ---------------------------------------------------------------------- - - /** - * Initialize the JAXBContext for the legacy namespace. - */ - private static synchronized void ensureLegacyContext() { - // legacy marshaller is initialized only on demand - if (legacyContext == null) { - try { - String slPkgLegacy1_0 = at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory.class.getPackage().getName(); - String slPkgLegacy1_1 = at.buergerkarte.namespaces.securitylayer._20020831_.ObjectFactory.class.getPackage().getName(); - String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName(); - String cardChannelPkg = at.buergerkarte.namespaces.cardchannel.ObjectFactory.class.getPackage().getName(); - legacyContext = JAXBContext.newInstance(slPkgLegacy1_0 + ":" + slPkgLegacy1_1 + ":" + xmldsigPkg + ":" + cardChannelPkg); - } catch (JAXBException e) { - log.error("Failed to setup JAXBContext security layer request.", e); - throw new SLRuntimeException(e); - } - } - } - - /** - * Creates an SL marshaller. - * - * @param formattedOutput - * true if the marshaller should produce formated - * output, false otherwise - * @return an SL marshaller - */ - public Marshaller createMarshaller(boolean formattedOutput) { - return createMarshaller(formattedOutput, false); - } - - /** - * Creates an SL marshaller. - * - * @param formattedOutput - * true if the marshaller should produce formated - * output, false otherwise - * @param fragment - * true if the marshaller should produce a XML fragment - * (omit XML declaration), false otherwise - * @return an SL marshaller - */ - public Marshaller createMarshaller(boolean formattedOutput, boolean fragment) { - try { - return MarshallerFactory.createMarshaller(context, formattedOutput, fragment); - } catch (JAXBException e) { - log.fatal("Failed to marshall error response.", e); - throw new SLRuntimeException("Failed to marshall error response.", e); - } - } - - /** - * Creates a legacy SL marshaller. - * - * @param formattedOutput - * true if the marshaller should produce formated - * output, false otherwise - * @return a legacy SL marshaller - */ - public Marshaller createLegacyMarshaller(boolean formattedOutput) { - return createLegacyMarshaller(formattedOutput, false); - } - - /** - * Creates a legacy SL marshaller. - * - * @param formattedOutput - * true if the marshaller should produce formated - * output, false otherwise - * @param fragment - * true if the marshaller should produce a XML fragment - * (omit XML declaration), false otherwise - * @return a legacy SL marshaller - */ - public Marshaller createLegacyMarshaller(boolean formattedOutput, boolean fragment) { - try { - ensureLegacyContext(); - return MarshallerFactory.createMarshaller(legacyContext, formattedOutput, fragment); - } catch (JAXBException e) { - log.fatal("Failed to marshall error response.", e); - throw new SLRuntimeException("Failed to marshall error response.", e); - } - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java deleted file mode 100644 index e9e483c5..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java +++ /dev/null @@ -1,45 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -public interface SLResult { - - public static enum SLResultType {BINARY, XML}; - - public SLResultType getResultType(); - - /** - * The MIME Type of the Result. - * - * @return may result null if unknown. - */ - public String getMimeType(); - - public void writeTo(Result aResult, boolean fragment); - - /** - * - * @param result - * @param fragment TODO - * @param transformer may be null. - */ - public void writeTo(Result result, Templates templates, boolean fragment); - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java deleted file mode 100644 index f25a0ea4..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java +++ /dev/null @@ -1,64 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import java.net.URL; -import java.security.cert.X509Certificate; - -import at.gv.egiz.bku.utils.binding.Protocol; - - -public class SLSourceContext { - - private URL sourceUrl; - private boolean sourceIsDataURL; - private X509Certificate sourceCertificate; - private String sourceHTTPReferer; - - public URL getSourceUrl() { - return sourceUrl; - } - - public void setSourceUrl(URL sourceProtocol) { - this.sourceUrl = sourceProtocol; - } - - public boolean isSourceIsDataURL() { - return sourceIsDataURL; - } - - public void setSourceIsDataURL(boolean sourceIsDataURL) { - this.sourceIsDataURL = sourceIsDataURL; - } - - public X509Certificate getSourceCertificate() { - return sourceCertificate; - } - - public void setSourceCertificate(X509Certificate sourceCertificate) { - this.sourceCertificate = sourceCertificate; - } - - public String getSourceHTTPReferer() { - return sourceHTTPReferer; - } - - public void setSourceHTTPReferer(String sourceHTTPReferer) { - this.sourceHTTPReferer = sourceHTTPReferer; - } - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java deleted file mode 100644 index f9df3ced..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java +++ /dev/null @@ -1,51 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands; - -import java.net.URL; -import java.security.cert.X509Certificate; - -public class SLTargetContext { - private URL targetUrl; - private boolean targetIsDataURL; - private X509Certificate targetCertificate; - - public URL getTargetUrl() { - return targetUrl; - } - - public void setTargetUrl(URL targetUrl) { - this.targetUrl = targetUrl; - } - - public boolean isTargetIsDataURL() { - return targetIsDataURL; - } - - public void setTargetIsDataURL(boolean targetIsDataURL) { - this.targetIsDataURL = targetIsDataURL; - } - - public X509Certificate getTargetCertificate() { - return targetCertificate; - } - - public void setTargetCertificate(X509Certificate targetCertificate) { - this.targetCertificate = targetCertificate; - } - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java deleted file mode 100644 index 9a4536e6..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.slcommands.impl; - -import java.io.ByteArrayOutputStream; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.regex.Pattern; - -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxAssocArrayPairType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadDataAssocArrayType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.buergerkarte.namespaces.securitylayer._1.XMLContentType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadKeys; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadPairs; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadValue; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slcommands.SLMarshallerFactory; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -/** - * An abstract base class for {@link Infobox} implementations of type associative array. - * - * @author mcentner - */ -public abstract class AbstractAssocArrayInfobox extends AbstractInfoboxImpl - implements AssocArrayInfobox { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(AbstractAssocArrayInfobox.class); - - /** - * The search string pattern. - */ - public static final String SEARCH_STRING_PATTERN = "(.&&[^/])+(/.&&[^/])*"; - - /** - * @return the keys available in this infobox. - */ - public abstract String[] getKeys(); - - /** - * @return true if the values are XML entities, or false otherwise. - */ - public abstract boolean isValuesAreXMLEntities(); - - /** - * Returns a key to value mapping for the given keys. - * - * @param keys a list of keys - * @param cmdCtx the command context - * - * @return a key to value mapping for the given keys. - * - * @throws SLCommandException if obtaining the values fails - */ - public abstract Map getValues(List keys, SLCommandContext cmdCtx) throws SLCommandException; - - /** - * Returns all keys that match the given searchString. - * - * @param searchString the search string - * - * @return all keys that match the given searchString - * - * @throws SLCommandException if the given search string is invalid - */ - protected List selectKeys(String searchString) throws SLCommandException { - - if ("*".equals(searchString) || "**".equals(searchString)) { - return Arrays.asList(getKeys()); - } - - if (!searchString.contains("*")) { - Arrays.asList(getKeys()).contains(searchString); - return Collections.singletonList(searchString); - } - - if (Pattern.matches(SEARCH_STRING_PATTERN, searchString)) { - -// for (int i = 0; i < searchString.length(); i++) { -// int codePoint = searchString.codePointAt(i); -// -// } - - // TODO : build pattern - return Collections.emptyList(); - } else { - log.info("Got invalid search string '" + searchString + "'"); - throw new SLCommandException(4010); - } - - } - - /** - * Read all keys specified by readKeys. - * - * @param readKeys - * the ReadKeys element - * @param cmdCtx - * the command context - * @return a corresponding InfoboxReadResult - * - * @throws SLCommandException - * if the ReadKeys element is invalid or obtaining the corresponding - * values fails - */ - protected InfoboxReadResult readKeys(ReadKeys readKeys, SLCommandContext cmdCtx) throws SLCommandException { - - List selectedKeys = selectKeys(readKeys.getSearchString()); - - if (readKeys.isUserMakesUnique() && selectedKeys.size() > 1) { - log.info("UserMakesUnique not supported"); - // TODO: give more specific error message - throw new SLCommandException(4010); - } - - ObjectFactory objectFactory = new ObjectFactory(); - - InfoboxReadDataAssocArrayType infoboxReadDataAssocArrayType = objectFactory - .createInfoboxReadDataAssocArrayType(); - - List keys = infoboxReadDataAssocArrayType.getKey(); - keys.addAll(selectedKeys); - - return new InfoboxReadResultImpl(infoboxReadDataAssocArrayType); - - } - - /** - * Read all pairs specified by readPairs. - * - * @param readPairs - * the readPairs element - * @param cmdCtx - * the command context - * @return a corresponding InfoboxReadResult - * - * @throws SLCommandException - * if the ReadPairs element is invalid or obtaining the corresponding - * values fails - */ - protected InfoboxReadResult readPairs(ReadPairs readPairs, SLCommandContext cmdCtx) throws SLCommandException { - - if (readPairs.isValuesAreXMLEntities() && !isValuesAreXMLEntities()) { - log.info("Got valuesAreXMLEntities=" + readPairs.isValuesAreXMLEntities() + " but infobox type is binary."); - throw new SLCommandException(4010); - } - - List selectedKeys = selectKeys(readPairs.getSearchString()); - - if (readPairs.isUserMakesUnique() && selectedKeys.size() > 1) { - log.info("UserMakesUnique not supported"); - // TODO: give more specific error message - throw new SLCommandException(4010); - } - - return new InfoboxReadResultImpl(marshallPairs(selectedKeys, getValues( - selectedKeys, cmdCtx), readPairs.isValuesAreXMLEntities())); - } - - /** - * Read the value specified by readPairs. - * - * @param readValue - * the readValue element - * @param cmdCtx - * the command context - * @return a corresponding InfoboxReadResult - * - * @throws SLCommandException - * if the ReadValue element is invalid or obtaining the corresponding - * values fails - */ - protected InfoboxReadResult readValue(ReadValue readValue, SLCommandContext cmdCtx) throws SLCommandException { - - if (readValue.isValueIsXMLEntity() && !isValuesAreXMLEntities()) { - log.info("Got valuesAreXMLEntities=" + readValue.isValueIsXMLEntity() + " but infobox type is binary."); - throw new SLCommandException(4010); - } - - List selectedKeys; - - if (Arrays.asList(getKeys()).contains(readValue.getKey())) { - selectedKeys = Collections.singletonList(readValue.getKey()); - } else { - selectedKeys = Collections.emptyList(); - } - - return new InfoboxReadResultImpl(marshallPairs(selectedKeys, getValues( - selectedKeys, cmdCtx), readValue.isValueIsXMLEntity())); - - } - - protected InfoboxReadDataAssocArrayType marshallPairs(List selectedKeys, Map values, boolean areXMLEntities) throws SLCommandException { - - ObjectFactory objectFactory = new ObjectFactory(); - - InfoboxReadDataAssocArrayType infoboxReadDataAssocArrayType = objectFactory.createInfoboxReadDataAssocArrayType(); - - for (String key : selectedKeys) { - InfoboxAssocArrayPairType infoboxAssocArrayPairType = objectFactory.createInfoboxAssocArrayPairType(); - infoboxAssocArrayPairType.setKey(key); - - Object value = values.get(key); - if (areXMLEntities) { - if (value instanceof byte[]) { - log.info("Got valuesAreXMLEntities=" + areXMLEntities + " but infobox type is binary."); - throw new SLCommandException(4122); - } else { - XMLContentType contentType = objectFactory.createXMLContentType(); - contentType.getContent().add(value); - infoboxAssocArrayPairType.setXMLContent(contentType); - } - } else { - infoboxAssocArrayPairType.setBase64Content((value instanceof byte[]) ? (byte[]) value : marshallValue(value)); - } - - infoboxReadDataAssocArrayType.getPair().add(infoboxAssocArrayPairType); - } - - return infoboxReadDataAssocArrayType; - - } - - protected byte[] marshallValue(Object jaxbElement) throws SLCommandException { - - Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false); - ByteArrayOutputStream result = new ByteArrayOutputStream(); - try { - marshaller.marshal(jaxbElement, result); - } catch (JAXBException e) { - log.info("Failed to marshall infobox content.", e); - throw new SLCommandException(4122); - } - - return result.toByteArray(); - - } - - @Override - public InfoboxReadResult read(InfoboxReadRequestType req, - SLCommandContext cmdCtx) throws SLCommandException { - - InfoboxReadParamsAssocArrayType assocArrayParameters = req - .getAssocArrayParameters(); - - if (assocArrayParameters == null) { - log.info("Infobox type is AssocArray but got no AssocArrayParameters."); - throw new SLCommandException(4010); - } - - if (assocArrayParameters.getReadKeys() != null) { - return readKeys(assocArrayParameters.getReadKeys(), cmdCtx); - } - - if (assocArrayParameters.getReadPairs() != null) { - return readPairs(assocArrayParameters.getReadPairs(), cmdCtx); - } - - // ReadValue - if (assocArrayParameters.getReadValue() != null) { - return readValue(assocArrayParameters.getReadValue(), cmdCtx); - } - - log - .info("Infobox type is AssocArray but got invalid AssocArrayParameters."); - throw new SLCommandException(4010); - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java deleted file mode 100644 index 23394bd5..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java +++ /dev/null @@ -1,66 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsBinaryFileType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; - -/** - * An abstract base class for {@link Infobox} implementations of type binary file. - * - * @author mcentner - */ -public abstract class AbstractBinaryFileInfobox extends AbstractInfoboxImpl implements BinaryFileInfobox { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(AbstractBinaryFileInfobox.class); - - /** - * Is this infobox' content an XML entity? - */ - protected boolean isXMLEntity = false; - - /** - * @return true if this infobox' content is an XML entity or false otherwise. - */ - public boolean isXMLEntity() { - return isXMLEntity; - } - - /** - * Sets the value returned by {@link #isXMLEntity()} according to the given - * request. - * - * @param request the InfoboxReadRequest - */ - public void setIsXMLEntity(InfoboxReadRequestType request) { - - InfoboxReadParamsBinaryFileType binaryFileParameters = request.getBinaryFileParameters(); - if (binaryFileParameters != null) { - isXMLEntity = binaryFileParameters.isContentIsXMLEntity(); - log.debug("Got ContentIsXMLEntity=" + isXMLEntity + "."); - } - - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java deleted file mode 100644 index b8e4030d..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java +++ /dev/null @@ -1,83 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -/** - * An abstract base class for implementations of security layer infobox requests. - * - * @author mcentner - * - * @param - */ -public abstract class AbstractInfoboxCommandImpl extends SLCommandImpl { - - /** - * The infobox implementation. - */ - protected Infobox infobox; - - /** - * The infobox factory. - */ - protected InfoboxFactory infoboxFactory; - - /** - * @return the infoboxFactory - */ - public InfoboxFactory getInfoboxFactory() { - return infoboxFactory; - } - - /** - * @param infoboxFactory the infoboxFactory to set - */ - public void setInfoboxFactory(InfoboxFactory infoboxFactory) { - this.infoboxFactory = infoboxFactory; - } - - @Override - public void init(SLCommandContext ctx, Object request) - throws SLCommandException { - super.init(ctx, request); - - String infoboxIdentifier = getInfoboxIdentifier(getRequestValue()); - - infobox = infoboxFactory.createInfobox(infoboxIdentifier); - } - - /** - * Returns the infobox identifier given in request. - * - * @param request the request value - * - * @return the infobox identifier givne in request - */ - protected abstract String getInfoboxIdentifier(T request); - - - public String getInfoboxIdentifier() { - if (infobox != null) { - return infobox.getIdentifier(); - } else { - return null; - } - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java deleted file mode 100644 index 564cb8ff..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.slcommands.impl; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; -import at.gv.egiz.bku.slcommands.InfoboxUpdateResult; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -/** - * An abstract base class for {@link Infobox} implementations. - * - * @author mcentner - */ -public abstract class AbstractInfoboxImpl implements Infobox { - - @Override - public InfoboxReadResult read(InfoboxReadRequestType request, - SLCommandContext cmdCtx) throws SLCommandException { - throw new SLCommandException(4011); - } - - @Override - public InfoboxUpdateResult update(InfoboxUpdateRequestType request, - SLCommandContext cmdCtx) throws SLCommandException { - throw new SLCommandException(4011); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java deleted file mode 100644 index 908d95da..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.slcommands.impl; - -/** - * An {@link Infobox} of type associative array as defined in Security Layer - * 1.2. - * - * @author mcentner - */ -public interface AssocArrayInfobox extends Infobox { - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java deleted file mode 100644 index c27f9446..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java +++ /dev/null @@ -1,27 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -/** - * An {@link Infobox} of type binary file as defined in Security Layer - * 1.2. - * - * @author mcentner - */ -public interface BinaryFileInfobox extends Infobox { - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java deleted file mode 100644 index 19b84ac7..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java +++ /dev/null @@ -1,235 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.WeakHashMap; - -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.cardchannel.ATRType; -import at.buergerkarte.namespaces.cardchannel.CommandAPDUType; -import at.buergerkarte.namespaces.cardchannel.ObjectFactory; -import at.buergerkarte.namespaces.cardchannel.ResetType; -import at.buergerkarte.namespaces.cardchannel.ResponseAPDUType; -import at.buergerkarte.namespaces.cardchannel.ResponseType; -import at.buergerkarte.namespaces.cardchannel.ScriptType; -import at.buergerkarte.namespaces.cardchannel.VerifyAPDUType; -import at.buergerkarte.namespaces.securitylayer._1.Base64XMLContentType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType; -import at.buergerkarte.namespaces.securitylayer._1.XMLContentType; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; -import at.gv.egiz.bku.slcommands.InfoboxUpdateResult; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.stal.STAL; -import at.gv.egiz.stal.ext.APDUScriptRequest; -import at.gv.egiz.stal.ext.APDUScriptResponse; -import at.gv.egiz.stal.ext.APDUScriptRequest.RequestScriptElement; -import at.gv.egiz.stal.ext.APDUScriptResponse.ResponseScriptElement; - -public class CardChannelInfoboxImpl extends AbstractBinaryFileInfobox { - - private static Log log = LogFactory.getLog(CardChannelInfoboxImpl.class); - - private static WeakHashMap> scriptResults = new WeakHashMap>(); - - private static JAXBContext jaxbContext; - - static { - try { - jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage().getName()); - } catch (JAXBException e) { - throw new SLRuntimeException("Failed to initalize CardChannel infobox.", e); - } - } - - public CardChannelInfoboxImpl() { - isXMLEntity = true; - } - - @Override - public String getIdentifier() { - return "CardChannel"; - } - - @Override - public InfoboxReadResult read(InfoboxReadRequestType request, - SLCommandContext cmdCtx) throws SLCommandException { - - at.buergerkarte.namespaces.securitylayer._1.ObjectFactory objectFactory - = new at.buergerkarte.namespaces.securitylayer._1.ObjectFactory(); - - Base64XMLContentType content = objectFactory.createBase64XMLContentType(); - XMLContentType xmlContent = objectFactory.createXMLContentType(); - content.setXMLContent(xmlContent); - - JAXBElement response = scriptResults.get(cmdCtx.getSTAL()); - if (response != null) { - xmlContent.getContent().add(response); - } - - return new InfoboxReadResultImpl(content); - - } - - @SuppressWarnings("unchecked") - @Override - public InfoboxUpdateResult update(InfoboxUpdateRequestType request, - SLCommandContext cmdCtx) throws SLCommandException { - - Base64XMLContentType binaryFileParameters = request.getBinaryFileParameters(); - - if (binaryFileParameters.getBase64Content() != null) { - log.info("Got Base64Content but ContentIsXMLEntity is true."); - throw new SLCommandException(4010); - } - - XMLContentType content = binaryFileParameters.getXMLContent(); - if (content instanceof at.gv.egiz.slbinding.impl.XMLContentType) { - - ByteArrayOutputStream redirectedStream = ((at.gv.egiz.slbinding.impl.XMLContentType) content).getRedirectedStream(); - if (redirectedStream != null) { - - if (log.isDebugEnabled()) { - - StringBuilder sb = new StringBuilder(); - sb.append("CardChannel script:\n"); - try { - sb.append(new String(redirectedStream.toByteArray(), "UTF-8")); - } catch (UnsupportedEncodingException e) { - sb.append(e.getMessage()); - } - log.debug(sb.toString()); - } - - Object object; - try { - Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); - object = unmarshaller.unmarshal(new ByteArrayInputStream(redirectedStream.toByteArray())); - } catch (JAXBException e) { - log.info("Failed to parse CardChannel script.", e); - throw new SLCommandException(4011); - } - - if (object instanceof JAXBElement) { - executeCardChannelScript(((JAXBElement) object).getValue(), cmdCtx); - return new InfoboxUpdateResultImpl(); - } - - } - - - } - log.info("Infobox identifier is '" + getIdentifier() + "' but XMLContent does not contain 'Script'."); - throw new SLCommandException(4010); - - } - - protected void executeCardChannelScript(ScriptType script, - SLCommandContext cmdCtx) throws SLCommandException { - - List resetOrCommandAPDUOrVerifyAPDU = script.getResetOrCommandAPDUOrVerifyAPDU(); - List requestScript = new ArrayList(); - - for (Object element : resetOrCommandAPDUOrVerifyAPDU) { - - if (element instanceof ResetType) { - - requestScript.add(new APDUScriptRequest.Reset()); - - } else if (element instanceof CommandAPDUType) { - - CommandAPDUType commandAPDU = (CommandAPDUType) element; - int sequence = (commandAPDU.getSequence() != null) - ? commandAPDU.getSequence().intValue() - : 0; - - requestScript.add( - new APDUScriptRequest.Command( - sequence, - commandAPDU.getValue(), - commandAPDU.getExpectedSW())); - - } else if (element instanceof VerifyAPDUType) { - log.warn("CardChannel script command 'VerifyAPDU' not implemented."); - throw new SLCommandException(4011); - } - } - - APDUScriptRequest scriptRequest = new APDUScriptRequest(requestScript); - - STAL stal = cmdCtx.getSTAL(); - STALHelper helper = new STALHelper(stal); - - helper.transmitSTALRequest(Collections.singletonList(scriptRequest)); - - List responseScript = ((APDUScriptResponse) helper - .nextResponse(APDUScriptResponse.class)).getScript(); - - ObjectFactory objectFactory = new ObjectFactory(); - - ResponseType responseType = objectFactory.createResponseType(); - - - for (ResponseScriptElement element : responseScript) { - - if (element instanceof APDUScriptResponse.ATR) { - - byte[] atr = ((APDUScriptResponse.ATR) element).getAtr(); - - ATRType atrType = objectFactory.createATRType(); - atrType.setValue(atr); - atrType.setRc(BigInteger.ZERO); - responseType.getATROrResponseAPDU().add(atrType); - - } else if (element instanceof APDUScriptResponse.Response) { - - APDUScriptResponse.Response response = (APDUScriptResponse.Response) element; - - ResponseAPDUType responseAPDUType = objectFactory.createResponseAPDUType(); - responseAPDUType.setSequence(BigInteger.valueOf(response.getSequence())); -// if (response.getRc() != 0) { - responseAPDUType.setRc(BigInteger.valueOf(response.getRc())); -// } - responseAPDUType.setSw(response.getSw()); - responseAPDUType.setValue(response.getApdu()); - - responseType.getATROrResponseAPDU().add(responseAPDUType); - } - - } - - scriptResults.put(stal, objectFactory.createResponse(responseType)); - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java deleted file mode 100644 index 0208f137..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java +++ /dev/null @@ -1,112 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import java.security.cert.CertificateEncodingException; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.stal.InfoboxReadRequest; -import at.gv.egiz.stal.STALRequest; - -/** - * An implementation of the {@link Infobox} Certificates as - * specified in Security Layer 1.2. - * - * @author mcentner - */ -public class CertificatesInfoboxImpl extends AbstractAssocArrayInfobox { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(CertificatesInfoboxImpl.class); - - /** - * The valid keys. - */ - public static final String[] CERTIFICATES_KEYS = new String[] { - "SecureSignatureKeypair", - "CertifiedKeypair" }; - - @Override - public String getIdentifier() { - return "Certificates"; - } - - @Override - public String[] getKeys() { - return CERTIFICATES_KEYS; - } - - @Override - public boolean isValuesAreXMLEntities() { - return false; - } - - @Override - public Map getValues(List certificates, SLCommandContext cmdCtx) throws SLCommandException { - - STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL()); - - if (certificates != null && !certificates.isEmpty()) { - - List stalRequests = new ArrayList(); - - // get certificates - InfoboxReadRequest infoboxReadRequest; - for (int i = 0; i < certificates.size(); i++) { - infoboxReadRequest = new InfoboxReadRequest(); - infoboxReadRequest.setInfoboxIdentifier(certificates.get(i)); - stalRequests.add(infoboxReadRequest); - } - - stalHelper.transmitSTALRequest(stalRequests); - - List x509Certs = stalHelper.getCertificatesFromResponses(); - - Map values = new HashMap(); - - for (int i = 0; i < certificates.size(); i++) { - try { - values.put(certificates.get(i), x509Certs.get(i).getEncoded()); - } catch (CertificateEncodingException e) { - log.error("Failed to encode certificate.", e); - throw new SLCommandException(4000); - } - } - - return values; - - } else { - - return new HashMap(); - - } - - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java deleted file mode 100644 index 01686641..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.slcommands.impl; - -import java.security.NoSuchAlgorithmException; -import java.security.cert.X509Certificate; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import javax.xml.crypto.MarshalException; -import javax.xml.crypto.URIReferenceException; -import javax.xml.crypto.dsig.XMLSignatureException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.ls.DOMImplementationLS; -import org.w3c.dom.ls.LSSerializer; - -import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType; -import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType; -import at.gv.egiz.bku.slcommands.CreateXMLSignatureCommand; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory; -import at.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactoryImpl; -import at.gv.egiz.bku.slcommands.impl.xsect.IdValueFactory; -import at.gv.egiz.bku.slcommands.impl.xsect.IdValueFactoryImpl; -import at.gv.egiz.bku.slcommands.impl.xsect.Signature; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLException; -import at.gv.egiz.bku.slexceptions.SLRequestException; -import at.gv.egiz.bku.slexceptions.SLViewerException; -import at.gv.egiz.dom.DOMUtils; -import at.gv.egiz.stal.InfoboxReadRequest; -import at.gv.egiz.stal.STALRequest; - -/** - * This class implements the security layer command - * CreateXMLSignatureRequest. - * - * @author mcentner - */ -public class CreateXMLSignatureCommandImpl extends - SLCommandImpl implements - CreateXMLSignatureCommand { - - /** - * Logging facility. - */ - protected static Log log = LogFactory - .getLog(CreateXMLSignatureCommandImpl.class); - - /** - * The signing certificate. - */ - protected X509Certificate signingCertificate; - - /** - * The keybox identifier of the key used for signing. - */ - protected String keyboxIdentifier; - - /** - * The to-be signed signature. - */ - protected Signature signature; - - @Override - public void init(SLCommandContext ctx, Object unmarshalledRequest) - throws SLCommandException { - super.init(ctx, unmarshalledRequest); - } - - @Override - public void prepareXMLSignature() throws SLCommandException, - SLRequestException { - - CreateXMLSignatureRequestType request = getRequestValue(); - - // TODO: make configurable? - IdValueFactory idValueFactory = new IdValueFactoryImpl(); - - // TODO: make configurable? - AlgorithmMethodFactory algorithmMethodFactory; - try { - algorithmMethodFactory = new AlgorithmMethodFactoryImpl( - signingCertificate); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } - - signature = new Signature(getCmdCtx().getURLDereferencerContext(), - idValueFactory, algorithmMethodFactory); - - // SigningTime - signature.setSigningTime(new Date()); - - // SigningCertificate - signature.setSignerCeritifcate(signingCertificate); - - // SignatureInfo - if (request.getSignatureInfo() != null) { - signature.setSignatureInfo(request.getSignatureInfo()); - } - - // DataObjects - for (DataObjectInfoType dataObjectInfo : request.getDataObjectInfo()) { - signature.addDataObject(dataObjectInfo); - } - - signature.buildXMLSignature(); - - } - - /** - * Gets the signing certificate from STAL. - * - * @throws SLCommandException - * if getting the singing certificate fails - */ - private void getSigningCertificate() throws SLCommandException { - - CreateXMLSignatureRequestType request = getRequestValue(); - keyboxIdentifier = request.getKeyboxIdentifier(); - - InfoboxReadRequest stalRequest = new InfoboxReadRequest(); - stalRequest.setInfoboxIdentifier(keyboxIdentifier); - - stalHelper.transmitSTALRequest(Collections.singletonList((STALRequest) stalRequest)); - List certificates = stalHelper.getCertificatesFromResponses(); - if (certificates == null || certificates.size() != 1) { - log.info("Got an unexpected number of certificates from STAL."); - throw new SLCommandException(4000); - } - signingCertificate = certificates.get(0); - - } - - /** - * Signs the signature. - * - * @throws SLCommandException - * if signing the signature fails - * @throws SLViewerException - */ - private void signXMLSignature() throws SLCommandException, SLViewerException { - - try { - signature.sign(getCmdCtx().getSTAL(), keyboxIdentifier); - } catch (MarshalException e) { - log.error("Failed to marshall XMLSignature.", e); - throw new SLCommandException(4000); - } catch (XMLSignatureException e) { - if (e.getCause() instanceof URIReferenceException) { - URIReferenceException uriReferenceException = (URIReferenceException) e - .getCause(); - if (uriReferenceException.getCause() instanceof SLCommandException) { - throw (SLCommandException) uriReferenceException.getCause(); - } - } - log.error("Failed to sign XMLSignature.", e); - throw new SLCommandException(4000); - } - - } - - @Override - public SLResult execute() { - try { - - // get certificate in order to select appropriate algorithms for hashing - // and signing - getSigningCertificate(); - - // prepare the XMLSignature for signing - prepareXMLSignature(); - - // sign the XMLSignature - signXMLSignature(); - - if (log.isTraceEnabled()) { - - DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS(); - LSSerializer serializer = domImplLS.createLSSerializer(); - String debugString = serializer.writeToString(signature.getDocument()); - - log.trace(debugString); - - } - - return new CreateXMLSignatureResultImpl(signature.getDocument()); - - } catch (SLException e) { - return new ErrorResultImpl(e, cmdCtx.getLocale()); - } - } - - @Override - public String getName() { - return "CreateXMLSignatureRequest"; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java deleted file mode 100644 index 19df4334..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java +++ /dev/null @@ -1,107 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.Document; -import org.w3c.dom.DocumentFragment; -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.gv.egiz.bku.slcommands.SLMarshallerFactory; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -/** - * This calls implements the result of the security layer command CreateXMLSignature. - * - * @author mcentner - */ -public class CreateXMLSignatureResultImpl extends SLResultImpl { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(CreateXMLSignatureResultImpl.class); - - /** - * The document containing the XMLSignature. - */ - protected Document doc; - - /** - * Creates a new instance of this CreateXMLSignatureResultImpl with the given - * signature document. - * - * @param document the signature document - * - * @throws NullPointerException if document is null - */ - public CreateXMLSignatureResultImpl(Document document) { - super(); - - if (document == null) { - throw new NullPointerException("Argument 'document' must not be null."); - } - - this.doc = document; - - marshallCreateXMLSignatureResponse(); - } - - /** - * Marshalls the CreateXMLSignatureResponse. - */ - private void marshallCreateXMLSignatureResponse() { - - ObjectFactory factory = new ObjectFactory(); - - CreateXMLSignatureResponseType createCreateXMLSignatureResponseType = factory.createCreateXMLSignatureResponseType(); - JAXBElement createCreateXMLSignatureResponse = factory.createCreateXMLSignatureResponse(createCreateXMLSignatureResponseType); - - DocumentFragment fragment = doc.createDocumentFragment(); - - Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false); - try { - marshaller.marshal(createCreateXMLSignatureResponse, fragment); - } catch (JAXBException e) { - log.error("Failed to marshall 'CreateXMLSignatureResponse'", e); - throw new SLRuntimeException(e); - } - - Node child = fragment.getFirstChild(); - if (child instanceof Element) { - Node node = doc.replaceChild(child, doc.getDocumentElement()); - child.appendChild(node); - } - - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - writeTo(doc, result, templates, fragment); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java deleted file mode 100644 index 57358ba0..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package at.gv.egiz.bku.slcommands.impl; - -import at.gv.egiz.bku.binding.HttpUtil; -import at.gv.egiz.bku.slcommands.impl.xsect.DataObject; -import at.gv.egiz.stal.HashDataInput; -import java.io.InputStream; - -/** - * DataObject-backed HashDataInput - * If reference caching is enabled, - * the hashdata input stream can be obtained repeatedly. - * @author clemens - */ -public class DataObjectHashDataInput implements HashDataInput { - - protected DataObject dataObject; - - public DataObjectHashDataInput(DataObject dataObject) { - if (dataObject.getReference() == null) - throw new NullPointerException("DataObject reference must not be null"); - this.dataObject = dataObject; - } - - @Override - public String getReferenceId() { - return dataObject.getReference().getId(); - } - - @Override - public String getMimeType() { - String contentType = dataObject.getMimeType(); - return contentType.split(";")[0].trim(); - } - - /** - * may be called repeatedly - * @return the pre-digested input stream if reference caching is enabled, null otherwise - */ - @Override - public InputStream getHashDataInput() { - return dataObject.getReference().getDigestInputStream(); - } - - @Override - public String getEncoding() { - return HttpUtil.getCharset(dataObject.getMimeType(), false); - } - - @Override - public String getFilename() { - //TODO obtain filename from dataObject, if not set return null or get filename (extension!) from mimetype - return dataObject.getFilename(); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java deleted file mode 100644 index aedde238..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import java.util.Locale; - -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -import at.gv.egiz.bku.slcommands.ErrorResult; -import at.gv.egiz.bku.slexceptions.SLException; - -/** - * This class implements the security layer result ErrorResponse. - * - * @author mcentner - */ -public class ErrorResultImpl extends SLResultImpl implements ErrorResult { - - /** - * The exception containing information provided in the ErrorResponse. - */ - protected SLException slException; - - /** - * The locale to be used for rendering an ErrorResponse. - */ - protected Locale locale; - - /** - * Creates a new instance of this ErrorResultImpl with the given - * slException containing information provided in the - * ErrorResponse and the locale for rendering - * the ErrorResponse. - * - * @param slException the exception - * @param locale the locale - */ - public ErrorResultImpl(SLException slException, Locale locale) { - this.slException = slException; - this.locale = locale; - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - if (locale == null) { - writeErrorTo(slException, result, templates, fragment); - } else { - writeErrorTo(slException, result, templates, locale, fragment); - } - } - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java deleted file mode 100644 index 0c2b96f9..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package at.gv.egiz.bku.slcommands.impl; - -import at.buergerkarte.namespaces.securitylayer._1.GetStatusRequestType; -import at.gv.egiz.bku.slcommands.GetStatusCommand; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.stal.ErrorResponse; -import at.gv.egiz.stal.STAL; -import at.gv.egiz.stal.STALResponse; -import at.gv.egiz.stal.StatusRequest; -import at.gv.egiz.stal.StatusResponse; -import java.util.Collections; -import java.util.List; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * - * @author Clemens Orthacker - */ -public class GetStatusCommandImpl extends SLCommandImpl implements GetStatusCommand { - - protected static Log log = LogFactory.getLog(GetStatusCommandImpl.class); - - @Override - public String getName() { - return "GetStatusRequest"; - } - - @Override - public SLResult execute() { - - //ignore maxDelay and TokenStatus -// GetStatusRequestType req = getRequestValue(); - - log.debug("execute GetStatusRequest"); - - StatusRequest stalRequest = new StatusRequest(); - - STAL stal = cmdCtx.getSTAL(); - - List responses = stal.handleRequest(Collections.singletonList(stalRequest)); - - if (responses != null && responses.size() == 1) { - STALResponse stalResponse = responses.get(0); - if (stalResponse instanceof StatusResponse) { - boolean ready = ((StatusResponse) stalResponse).isCardReady(); - log.trace("received status response cardReady: " + ready); - return new GetStatusResultImpl(ready); - } else if (stalResponse instanceof ErrorResponse) { - log.debug("received error response"); - SLCommandException ex = new SLCommandException(((ErrorResponse) stalResponse).getErrorCode()); - return new ErrorResultImpl(ex, cmdCtx.getLocale()); - } - } - log.error("received unexpected responses"); - return new ErrorResultImpl(new SLCommandException(4000), cmdCtx.getLocale()); - - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java deleted file mode 100644 index fb1f627f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.slcommands.impl; - -import at.buergerkarte.namespaces.securitylayer._1.GetStatusResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.buergerkarte.namespaces.securitylayer._1.TokenStatusType; -import at.gv.egiz.bku.slcommands.GetStatusResult; -import javax.xml.bind.JAXBElement; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -/** - * - * @author Clemens Orthacker - */ -public class GetStatusResultImpl extends SLResultImpl implements GetStatusResult { - - protected ObjectFactory of; - protected GetStatusResponseType responseType; - - public GetStatusResultImpl(boolean ready) { - of = new ObjectFactory(); - responseType = of.createGetStatusResponseType(); - if (ready) { - responseType.setTokenStatus(TokenStatusType.READY); - } else { - responseType.setTokenStatus(TokenStatusType.REMOVED); - } - - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - JAXBElement response = of.createGetStatusResponse(responseType); - writeTo(response, result, templates, fragment); - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java deleted file mode 100644 index 160e9589..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java +++ /dev/null @@ -1,290 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.net.MalformedURLException; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.List; - -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 javax.xml.transform.Result; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Node; - -import at.buergerkarte.namespaces.personenbindung._20020506_.CompressedIdentityLinkType; -import at.buergerkarte.namespaces.securitylayer._1.AnyChildrenType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.idlink.CompressedIdentityLinkFactory; -import at.gv.egiz.idlink.IdentityLinkTransformer; -import at.gv.egiz.idlink.ans1.IdentityLink; -import at.gv.egiz.stal.InfoboxReadRequest; -import at.gv.egiz.stal.STALRequest; - -/** - * An implementation of the {@link Infobox} IdentityLink as - * specified in Security Layer 1.2 - * - * @author mcentner - */ -public class IdentityLinkInfoboxImpl extends AbstractBinaryFileInfobox { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(IdentityLinkInfoboxImpl.class); - - /** - * The box specific parameter IdentityLinkDomainIdentifier. - */ - public static final String BOX_SPECIFIC_PARAMETER_IDENTITY_LINK_DOMAIN_IDENTIFIER = "IdentityLinkDomainIdentifier"; - - /** - * The value of the box specific parameter IdentityLinkDomainIdentifier. - */ - private String domainIdentifier; - - @Override - public String getIdentifier() { - return "IdentityLink"; - } - - /** - * @return the value of the box specific parameter IdentityLinkDomainIdentifier - */ - public String getDomainIdentifier() { - return domainIdentifier; - } - - @Override - public InfoboxReadResult read(InfoboxReadRequestType req, SLCommandContext cmdCtx) throws SLCommandException { - - AnyChildrenType boxSpecificParameters = req.getBoxSpecificParameters(); - - if (boxSpecificParameters != null) { - // check BoxSpecificParameters - List parameter = boxSpecificParameters.getAny(); - JAXBElement element; - if (parameter != null - && parameter.size() == 1 - && parameter.get(0) instanceof JAXBElement - && SLCommand.NAMESPACE_URI.equals((element = (JAXBElement) parameter.get(0)).getName().getNamespaceURI()) - && BOX_SPECIFIC_PARAMETER_IDENTITY_LINK_DOMAIN_IDENTIFIER.equals(element.getName().getLocalPart()) - && element.getValue() instanceof String) { - domainIdentifier = (String) element.getValue(); - log.debug("Got sl:IdentityLinkDomainIdentifier: " + domainIdentifier); - } else { - log.info("Got invalid BoxSpecificParameters."); - throw new SLCommandException(4010); - } - } - - setIsXMLEntity(req); - - STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL()); - - List stalRequests = new ArrayList(); - - InfoboxReadRequest infoboxReadRequest; - // get raw identity link - infoboxReadRequest = new InfoboxReadRequest(); - infoboxReadRequest.setInfoboxIdentifier(getIdentifier()); - infoboxReadRequest.setDomainIdentifier(domainIdentifier); - stalRequests.add(infoboxReadRequest); - - // get certificates - infoboxReadRequest = new InfoboxReadRequest(); - infoboxReadRequest.setInfoboxIdentifier("SecureSignatureKeypair"); - stalRequests.add(infoboxReadRequest); - infoboxReadRequest = new InfoboxReadRequest(); - infoboxReadRequest.setInfoboxIdentifier("CertifiedKeypair"); - stalRequests.add(infoboxReadRequest); - - stalHelper.transmitSTALRequest(stalRequests); - log.trace("Got STAL response"); - - IdentityLink identityLink = stalHelper.getIdentityLinkFromResponses(); - List certificates = stalHelper.getCertificatesFromResponses(); - - - CompressedIdentityLinkFactory idLinkFactory = CompressedIdentityLinkFactory.getInstance(); - JAXBElement compressedIdentityLink = idLinkFactory - .createCompressedIdentityLink(identityLink, certificates, getDomainIdentifier()); - - IdentityLinkTransformer identityLinkTransformer = IdentityLinkTransformer.getInstance(); - String issuerTemplate = identityLink.getIssuerTemplate(); - - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - DocumentBuilder db; - try { - db = dbf.newDocumentBuilder(); - } catch (ParserConfigurationException e) { - log.error("Failed to create XML document.", e); - throw new SLRuntimeException(e); - } - - Document document = db.newDocument(); - try { - idLinkFactory.marshallCompressedIdentityLink(compressedIdentityLink, document, null, true); - } catch (JAXBException e) { - log.info("Failed to marshall CompressedIdentityLink.", e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID, - new Object[] { getIdentifier() }); - } - - InfoboxReadResultFileImpl result = new InfoboxReadResultFileImpl(); - ByteArrayOutputStream resultBytes = null; - Result xmlResult; - if (isXMLEntity()) { - // we will return the result as XML entity - xmlResult = result.getXmlResult(true); - } else { - // we will return the result as binary data - if (getDomainIdentifier() != null) { - // we need an XML result to be able to replace the domain identifier below - Document doc; - try { - doc = dbf.newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e) { - // it should always be possible to create a new Document - log.error("Failed to create XML document.", e); - throw new SLRuntimeException(e); - } - xmlResult = new DOMResult(doc); - } else { - resultBytes = new ByteArrayOutputStream(); - xmlResult = new StreamResult(resultBytes); - } - } - - try { - log.trace("Trying to transform identitylink"); - identityLinkTransformer.transformIdLink(issuerTemplate, new DOMSource(document), xmlResult); - } catch (MalformedURLException e) { - log.warn("Malformed issuer template URL '" + issuerTemplate + "'."); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } catch (IOException e) { - log.warn("Failed to dereferene issuer template URL '" + issuerTemplate + "'." ,e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } catch (TransformerConfigurationException e) { - log.warn("Failed to create transformation template from issuer template URL '" + issuerTemplate + "'", e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } catch (TransformerException e) { - log.info("Faild to transform CompressedIdentityLink.", e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } - - // TODO: Report BUG in IssuerTemplates - // Some IssuerTemplate stylesheets do not consider the pr:Type-Element of the CompressedIdentityLink ... - if (getDomainIdentifier() != null) { - if (xmlResult instanceof DOMResult) { - Node node = ((DOMResult) xmlResult).getNode(); - Node nextSibling = ((DOMResult) xmlResult).getNextSibling(); - Node idLinkNode; - if (nextSibling != null) { - idLinkNode = nextSibling.getPreviousSibling(); - } else if (node != null) { - idLinkNode = node.getFirstChild(); - } else { - log - .error("An IdentityLinkDomainIdentifier of '" - + getDomainIdentifier() - + "' has been given. However, it cannot be set, as the transformation result does not contain a node."); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } - IdentityLinkTransformer.setDomainIdentifier(idLinkNode, getDomainIdentifier()); - } else { - log - .error("An IdentityLinkDomainIdentifier of '" - + getDomainIdentifier() - + "' has been given. However, it cannot be set, as the transformation result is not of type DOM."); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } - } - - if (!isXMLEntity()) { - if (resultBytes == null) { - resultBytes = new ByteArrayOutputStream(); - if (xmlResult instanceof DOMResult) { - Node node = ((DOMResult) xmlResult).getNode(); - DOMSource xmlSource = new DOMSource(node); - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - try { - Transformer transformer = transformerFactory.newTransformer(); - transformer.transform(xmlSource, new StreamResult(resultBytes)); - } catch (TransformerConfigurationException e) { - log.error(e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } catch (TransformerException e) { - log.error(e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } - } else { - log.error("ContentIsXMLEntity is set to 'false'. However, an XMLResult has already been set."); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED, - new Object[] { issuerTemplate }); - } - } - result.setResultBytes(resultBytes.toByteArray()); - } - - return result; - - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java deleted file mode 100644 index 99d62721..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.slcommands.impl; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; -import at.gv.egiz.bku.slcommands.InfoboxUpdateResult; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -/** - * An implementation of this interface represents a infobox as defined in - * Security-Layer 1.2. - * - * @author mcentner - */ -public interface Infobox { - - /** - * @return the identifier of this infobox - */ - public String getIdentifier(); - - /** - * Read data from this infobox. - * - * @param request - * the InfoboxReadRequest - * @param cmdCtx - * the command context - * - * @return the data read from this infobox as InfoboxReadResult - * - * @throws SLCommandException - * - * if reading from this infobox fails - */ - public InfoboxReadResult read(InfoboxReadRequestType request, - SLCommandContext cmdCtx) throws SLCommandException; - - /** - * Update data in this infobox. - * - * @param request - * the InfoboxUpdateRequest - * @param cmdCtx - * the command context - * @return a corresponding InfoboxUpdateResult - * @throws SLCommandException - * if updating this infobox fails - */ - public InfoboxUpdateResult update(InfoboxUpdateRequestType request, - SLCommandContext cmdCtx) throws SLCommandException; - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java deleted file mode 100644 index fdf94297..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java +++ /dev/null @@ -1,90 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import java.util.HashMap; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -/** - * A factory for creating {@link Infobox}es. - * - * @author mcentner - */ -public class InfoboxFactory { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(InfoboxFactory.class); - - /** - * The mapping of Infobox name to concrete Infobox factory. - */ - private HashMap infoboxFactories = new HashMap(); - - /** - * @param infoboxFactories the infoboxFactories to set - */ - public void setInfoboxFactories( - HashMap factories) { - if (log.isDebugEnabled()) { - StringBuilder sb = new StringBuilder(); - sb.append("Registered infobox factories for"); - for (String name : factories.keySet()) { - sb.append("\n " + name + " : " + factories.get(name).getClass()); - } - log.debug(sb); - } - this.infoboxFactories = factories; - } - - /** - * Create a new {@link Infobox} instance for the given - * infoboxIdentifier. - * - * @param infoboxIdentifier - * the infobox identifier - * - * @return an {@link Infobox} implementation for the given infobox identifier - * - * @throws SLCommandException - * if there is no implementation for the given infobox identifier - * @throws SLRuntimeException - * if creating an {@link Infobox} instance fails - */ - public Infobox createInfobox(String infoboxIdentifier) throws SLCommandException, SLRuntimeException { - - AbstractInfoboxFactory factory = infoboxFactories.get(infoboxIdentifier); - if (factory == null) { - log.info("Unsupported infobox '" + infoboxIdentifier + "."); - throw new SLCommandException(4002, - SLExceptionMessages.EC4002_INFOBOX_UNKNOWN, - new Object[] { infoboxIdentifier }); - } - - return factory.createInfobox(); - - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java deleted file mode 100644 index 693f444f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType; -import at.gv.egiz.bku.slcommands.InfoboxReadCommand; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -/** - * This class implements the security layer command - * InfoboxReadRequest. - *

- * NOTE: Currently the only supported infobox identifier is ' - * IdentityLink'. - *

- * - * @author mcentner - */ -public class InfoboxReadCommandImpl extends AbstractInfoboxCommandImpl implements - InfoboxReadCommand { - - /** - * Logging facility. - */ - protected static Log log = LogFactory.getLog(InfoboxReadCommandImpl.class); - - @Override - public String getName() { - return "InfoboxReadRequest"; - } - - @Override - protected String getInfoboxIdentifier(InfoboxReadRequestType request) { - return request.getInfoboxIdentifier(); - } - - @Override - public void init(SLCommandContext ctx, Object request) throws SLCommandException { - super.init(ctx, request); - - InfoboxReadRequestType req = getRequestValue(); - - if (req.getAssocArrayParameters() != null && - !(infobox instanceof AssocArrayInfobox)) { - log.info("Got AssocArrayParameters but Infobox type is not AssocArray."); - throw new SLCommandException(4010); - } - - if (req.getBinaryFileParameters() != null && - !(infobox instanceof BinaryFileInfobox)) { - log.info("Got BinaryFileParameters but Infobox type is not BinaryFile."); - throw new SLCommandException(4010); - } - - } - - @Override - public SLResult execute() { - - try { - return infobox.read(getRequestValue(), getCmdCtx()); - } catch (SLCommandException e) { - return new ErrorResultImpl(e, getCmdCtx().getLocale()); - } - - } - - @Override - public String getIdentityLinkDomainId() { - if (infobox instanceof IdentityLinkInfoboxImpl) { - return ((IdentityLinkInfoboxImpl) infobox).getDomainIdentifier(); - } else { - return null; - } - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java deleted file mode 100644 index 422b424f..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java +++ /dev/null @@ -1,160 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; -import javax.xml.transform.dom.DOMResult; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import at.buergerkarte.namespaces.securitylayer._1.Base64XMLContentType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.buergerkarte.namespaces.securitylayer._1.XMLContentType; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slcommands.SLMarshallerFactory; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; - -/** - * This class implements the result of the security layer command InfoboxReadRequest. - * - * @author mcentner - */ -public class InfoboxReadResultFileImpl extends SLResultImpl implements - InfoboxReadResult { - - /** - * Logging facility. - */ - protected static Log log = LogFactory.getLog(InfoboxReadResultFileImpl.class); - - /** - * The XML document containing the infobox content. - */ - protected Document xmlDocument; - - /** - * Creates the response document from the given binaryContent. - * - * @param binaryContent the infobox content - * @param preserveSpace the value of the preserveSpace parameter - * - * @return the created response document - */ - private Document createResponseDocument(byte[] binaryContent, boolean preserveSpace) { - - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - Document doc; - try { - doc = dbf.newDocumentBuilder().newDocument(); - } catch (ParserConfigurationException e) { - // it should always be possible to create a new Document - log.error("Failed to create XML document.", e); - throw new SLRuntimeException(e); - } - - ObjectFactory factory = new ObjectFactory(); - - Base64XMLContentType base64XMLContentType = factory.createBase64XMLContentType(); - if (binaryContent == null) { - XMLContentType xmlContentType = factory.createXMLContentType(); - if (preserveSpace) { - xmlContentType.setSpace("preserve"); - } - base64XMLContentType.setXMLContent(xmlContentType); - } else { - base64XMLContentType.setBase64Content(binaryContent); - } - InfoboxReadResponseType infoboxReadResponseType = factory.createInfoboxReadResponseType(); - infoboxReadResponseType.setBinaryFileData(base64XMLContentType); - - JAXBElement infoboxReadResponse = factory.createInfoboxReadResponse(infoboxReadResponseType); - - Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false); - try { - marshaller.marshal(infoboxReadResponse, doc); - } catch (JAXBException e) { - log.error("Failed to marshal 'InfoboxReadResponse' document.", e); - throw new SLRuntimeException(e); - } - - return doc; - - } - - - /** - * @return an XMLResult for marshalling the infobox to - */ - public Result getXmlResult(boolean preserveSpace) { - - xmlDocument = createResponseDocument(null, preserveSpace); - - NodeList nodeList = xmlDocument.getElementsByTagNameNS(SLCommand.NAMESPACE_URI, "XMLContent"); - return new DOMResult(nodeList.item(0)); - - } - - /** - * Creates a new InfoboxReadResponse document and appends - * the given node as child node of the XMLContent element. - * - * @param node the node to be appended as child node of the XMLContnet element - * @param preserveSpace if true the value of the XMLContent's space - * attribute is set to preserve. - */ - public void setResultXMLContent(Node node, boolean preserveSpace) { - - xmlDocument = createResponseDocument(null, preserveSpace); - - NodeList nodeList = xmlDocument.getElementsByTagNameNS(SLCommand.NAMESPACE_URI, "XMLContent"); - if (node.getOwnerDocument() != xmlDocument) { - node = xmlDocument.importNode(node, true); - } - nodeList.item(0).appendChild(node); - - } - - /** - * Creates a new result document for this InfoboxReadResult - * and sets the given resultBytes as content. - * - * @param resultBytes - */ - public void setResultBytes(byte[] resultBytes) { - - xmlDocument = createResponseDocument(resultBytes, false); - - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - writeTo(xmlDocument, result, templates, fragment); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java deleted file mode 100644 index 271ec955..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java +++ /dev/null @@ -1,64 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import javax.xml.bind.JAXBElement; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -import at.buergerkarte.namespaces.securitylayer._1.Base64XMLContentType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadDataAssocArrayType; -import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.gv.egiz.bku.slcommands.InfoboxReadResult; - -public class InfoboxReadResultImpl extends SLResultImpl implements InfoboxReadResult { - - /** - * The InfoboxReadResponse - */ - protected InfoboxReadResponseType infoboxReadResponse; - - public InfoboxReadResultImpl(InfoboxReadDataAssocArrayType assocArray) { - - ObjectFactory objectFactory = new ObjectFactory(); - InfoboxReadResponseType infoboxReadResponseType = objectFactory.createInfoboxReadResponseType(); - - infoboxReadResponseType.setAssocArrayData(assocArray); - - this.infoboxReadResponse = infoboxReadResponseType; - } - - public InfoboxReadResultImpl(Base64XMLContentType value) { - - ObjectFactory objectFactory = new ObjectFactory(); - InfoboxReadResponseType infoboxReadResponseType = objectFactory.createInfoboxReadResponseType(); - - infoboxReadResponseType.setBinaryFileData(value); - - this.infoboxReadResponse = infoboxReadResponseType; - - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - ObjectFactory objectFactory = new ObjectFactory(); - JAXBElement response = objectFactory.createInfoboxReadResponse(infoboxReadResponse); - writeTo(response, result, templates, fragment); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java deleted file mode 100644 index 1cdeda94..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java +++ /dev/null @@ -1,74 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType; -import at.gv.egiz.bku.slcommands.InfoboxUpdateCommand; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -public class InfoboxUpdateCommandImpl extends - AbstractInfoboxCommandImpl implements InfoboxUpdateCommand { - - private static Log log = LogFactory.getLog(InfoboxUpdateCommandImpl.class); - - @Override - public String getName() { - return "InfoboxUpdateRequest"; - } - - @Override - protected String getInfoboxIdentifier(InfoboxUpdateRequestType request) { - return request.getInfoboxIdentifier(); - } - - @Override - public void init(SLCommandContext ctx, Object request) throws SLCommandException { - super.init(ctx, request); - - InfoboxUpdateRequestType req = getRequestValue(); - - if (req.getAssocArrayParameters() != null && - !(infobox instanceof AssocArrayInfobox)) { - log.info("Got AssocArrayParameters but Infobox type is not AssocArray."); - throw new SLCommandException(4010); - } - - if (req.getBinaryFileParameters() != null && - !(infobox instanceof BinaryFileInfobox)) { - log.info("Got BinaryFileParameters but Infobox type is not BinaryFile."); - throw new SLCommandException(4010); - } - - } - - @Override - public SLResult execute() { - - try { - return infobox.update(getRequestValue(), getCmdCtx()); - } catch (SLCommandException e) { - return new ErrorResultImpl(e, getCmdCtx().getLocale()); - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java deleted file mode 100644 index e12536ba..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import javax.xml.bind.JAXBElement; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.gv.egiz.bku.slcommands.InfoboxUpdateResult; - -public class InfoboxUpdateResultImpl extends SLResultImpl implements - InfoboxUpdateResult { - - protected static JAXBElement RESPONSE; - - static { - ObjectFactory factory = new ObjectFactory(); - InfoboxUpdateResponseType type = factory.createInfoboxUpdateResponseType(); - RESPONSE = factory.createInfoboxUpdateResponse(type); - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - writeTo(RESPONSE, result, templates, fragment); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java deleted file mode 100644 index 1b6fb237..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java +++ /dev/null @@ -1,43 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import at.buergerkarte.namespaces.securitylayer._1.NullOperationRequestType; -import at.gv.egiz.bku.slcommands.NullOperationCommand; -import at.gv.egiz.bku.slcommands.NullOperationResult; -import at.gv.egiz.bku.slcommands.SLResult; - -/** - * This class implements the security layer command NullOperation. - * - * @author mcentner - */ -public class NullOperationCommandImpl extends SLCommandImpl implements NullOperationCommand { - - protected static NullOperationResult RESULT = new NullOperationResultImpl(); - - @Override - public SLResult execute() { - return RESULT; - } - - @Override - public String getName() { - return "NullOperationRequest"; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java deleted file mode 100644 index 87733e39..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java +++ /dev/null @@ -1,48 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import javax.xml.bind.JAXBElement; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; - -import at.buergerkarte.namespaces.securitylayer._1.NullOperationResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.gv.egiz.bku.slcommands.NullOperationResult; - -/** - * This class represents the result of the security layer command - * NullOperation. - * - * @author mcentner - */ -public class NullOperationResultImpl extends SLResultImpl implements NullOperationResult { - - protected static JAXBElement RESPONSE; - - static { - ObjectFactory factory = new ObjectFactory(); - NullOperationResponseType type = factory.createNullOperationResponseType(); - RESPONSE = factory.createNullOperationResponse(type); - } - - @Override - public void writeTo(Result result, Templates templates, boolean fragment) { - super.writeTo(RESPONSE, result, templates, fragment); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java deleted file mode 100644 index ed055b69..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java +++ /dev/null @@ -1,81 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import javax.xml.bind.JAXBElement; - -import at.gv.egiz.bku.slcommands.SLCommand; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; - -/** - * This class serves as abstract base class for the implementation of a security - * layer command. - * - * @author mcentner - * - * @param - * the type of the corresponding request value - */ -public abstract class SLCommandImpl implements SLCommand { - - /** - * The SLCommandContext for this SLCommand. - */ - protected SLCommandContext cmdCtx; - - /** - * The STAL helper. - */ - protected STALHelper stalHelper; - - /** - * The request element of this command. - */ - protected JAXBElement request; - - @SuppressWarnings("unchecked") - @Override - public void init(SLCommandContext ctx, Object request) - throws SLCommandException { - - this.request = (JAXBElement) request; - - this.cmdCtx = ctx; - stalHelper = new STALHelper(cmdCtx.getSTAL()); - - } - - /** - * Returns the request value. - * - * It is a convenience method for request.getValue(). - * - * @see JAXBElement#getValue() - * @return the request value - */ - protected T getRequestValue() { - return request.getValue(); - } - - /** - * @return the corresponding SLCommandContext - */ - protected SLCommandContext getCmdCtx() { - return cmdCtx; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java deleted file mode 100644 index 0077b7b2..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java +++ /dev/null @@ -1,297 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import java.io.UnsupportedEncodingException; -import java.math.BigInteger; -import java.util.Locale; - -import javax.xml.XMLConstants; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Marshaller; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Result; -import javax.xml.transform.Templates; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.TransformerFactoryConfigurationError; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.sax.SAXTransformerFactory; -import javax.xml.transform.sax.TransformerHandler; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.Node; - -import at.buergerkarte.namespaces.securitylayer._1.ErrorResponseType; -import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory; -import at.gv.egiz.bku.slcommands.SLMarshallerFactory; -import at.gv.egiz.bku.slcommands.SLResult; -import at.gv.egiz.bku.slexceptions.SLBindingException; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLException; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.slexceptions.SLVersionException; -import at.gv.egiz.bku.utils.DebugOutputStream; -import at.gv.egiz.bku.utils.DebugWriter; - -/** - * This class serves as an abstract base class for the implementation of a - * security layer result. - * - * @author mcentner - */ -public abstract class SLResultImpl implements SLResult { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(SLResult.class); - - /** - * The security layer result type (default = XML). - */ - protected SLResultType resultType = SLResultType.XML; - - /** - * The security layer result MIME-type (default = text/xml). - */ - protected String resultingMimeType = "text/xml"; - - /* (non-Javadoc) - * @see at.gv.egiz.bku.slcommands.SLResult#getResultType() - */ - public SLResultType getResultType() { - return resultType; - } - - /* (non-Javadoc) - * @see at.gv.egiz.bku.slcommands.SLResult#getMimeType() - */ - public String getMimeType() { - return resultingMimeType; - } - - @Override - public void writeTo(Result result, boolean fragment) { - writeTo(result, null, false); - } - - @Override - public abstract void writeTo(Result result, Templates templates, boolean fragment); - - private TransformerHandler getTransformerHandler(Templates templates, Result result) throws SLException { - try { - SAXTransformerFactory transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); - transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - TransformerHandler transformerHandler = transformerFactory.newTransformerHandler(templates); - transformerHandler.setResult(result); - return transformerHandler; - } catch (TransformerFactoryConfigurationError e) { - log.error("Failed to create an instance of SAXTransformerFactory.", e); - throw new SLBindingException(2000); - } catch (IllegalArgumentException e) { - log.error("Failed to set result for transformation.", e); - throw new SLBindingException(2000); - } catch (TransformerConfigurationException e) { - log.info("Failed to create an instance of SAXTransformerFactory.", e); - throw new SLBindingException(2008); - } - } - - /** - * Writes the given response to the SAX result using - * the given transform templates. - * - * @param response - * @param result - * @param templates - */ - protected void writeTo(JAXBElement response, Result result, Templates templates, boolean fragment) { - - DebugWriter dw = null; - DebugOutputStream ds = null; - if (log.isTraceEnabled() && result instanceof StreamResult) { - StreamResult streamResult = (StreamResult) result; - if (streamResult.getOutputStream() != null) { - ds = new DebugOutputStream(streamResult.getOutputStream()); - streamResult.setOutputStream(ds); - } - if (streamResult.getWriter() != null) { - dw = new DebugWriter(streamResult.getWriter()); - streamResult.setWriter(dw); - } - } - - TransformerHandler transformerHandler = null; - if (templates != null) { - try { - transformerHandler = getTransformerHandler(templates, result); - } catch (SLException e) { - writeErrorTo(e, result, templates, fragment); - } - } - - Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(true); - try { - if (transformerHandler != null) { - marshaller.marshal(response, transformerHandler); - } else { - marshaller.marshal(response, result); - } - } catch (JAXBException e) { - log.info("Failed to marshall " + response.getName() + " result." , e); - SLCommandException commandException = new SLCommandException(4000); - writeErrorTo(commandException, result, templates, fragment); - } - - if (ds != null) { - try { - log.trace("Marshalled result:\n" + new String(ds.getBufferedBytes(), "UTF-8")); - } catch (UnsupportedEncodingException e) { - log.trace(e.getMessage()); - } - } - - if (dw != null) { - log.trace("Marshalled result:\n" + dw.getBufferedString()); - } - - } - - protected void writeTo(Node node, Result result, Templates templates, boolean fragment) { - - DebugWriter dw = null; - DebugOutputStream ds = null; - if (log.isTraceEnabled() && result instanceof StreamResult) { - StreamResult streamResult = (StreamResult) result; - if (streamResult.getOutputStream() != null) { - ds = new DebugOutputStream(streamResult.getOutputStream()); - streamResult.setOutputStream(ds); - } - if (streamResult.getWriter() != null) { - dw = new DebugWriter(streamResult.getWriter()); - streamResult.setWriter(dw); - } - } - - if (templates == null) { - try { - TransformerFactory transformerFactory = TransformerFactory.newInstance(); - Transformer transformer = transformerFactory.newTransformer(); - if (fragment) { - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - } - transformer.transform(new DOMSource(node), result); - } catch (TransformerConfigurationException e) { - log.error("Failed to create Transformer.", e); - writeErrorTo(new SLException(4000), result, null, fragment); - } catch (TransformerException e) { - log.error("Failed to transform result.", e); - writeErrorTo(new SLException(4000), result, null, fragment); - } - } else { - try { - Transformer transformer = templates.newTransformer(); - if (fragment) { - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - } - transformer.transform(new DOMSource(node), result); - } catch (TransformerConfigurationException e) { - log.info("Failed to create transformer.", e); - writeErrorTo(new SLException(2008), result, templates, fragment); - } catch (TransformerException e) { - log.error("Failed to transform result.", e); - writeErrorTo(new SLException(2008), result, templates, fragment); - } - } - - if (ds != null) { - try { - log.trace("Marshalled result:\n" + new String(ds.getBufferedBytes(), "UTF-8")); - } catch (UnsupportedEncodingException e) { - log.trace(e.getMessage()); - } - } - - if (dw != null) { - log.trace("Marshalled result:\n" + dw.getBufferedString()); - } - - } - - protected void writeErrorTo(SLException slException, Result result, Templates templates, boolean fragment) { - writeErrorTo(slException, result, templates, Locale.getDefault(), fragment); - } - - protected void writeErrorTo(SLException slException, Result result, Templates templates, Locale locale, boolean fragment) { - - TransformerHandler transformerHandler = null; - if (templates != null) { - try { - transformerHandler = getTransformerHandler(templates, result); - } catch (SLException e) { - // write the exception thrown instead of the given one - slException = e; - } - } - - Object response; - - Marshaller marshaller; - if (slException instanceof SLVersionException - && ("http://www.buergerkarte.at/namespaces/securitylayer/20020225#" - .equals(((SLVersionException) slException).getNamespaceURI()) || - "http://www.buergerkarte.at/namespaces/securitylayer/20020831#" - .equals(((SLVersionException) slException).getNamespaceURI()))) { - // issue ErrorResponse in the legacy namespace - at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory factory - = new at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory(); - at.buergerkarte.namespaces.securitylayer._20020225_.ErrorResponseType errorResponseType = factory - .createErrorResponseType(); - errorResponseType.setErrorCode(BigInteger.valueOf(slException - .getErrorCode())); - errorResponseType.setInfo(slException.getLocalizedMessage(locale)); - response = factory.createErrorResponse(errorResponseType); - marshaller = SLMarshallerFactory.getInstance().createLegacyMarshaller(true, fragment); - } else { - ObjectFactory factory = new ObjectFactory(); - ErrorResponseType responseType = factory.createErrorResponseType(); - responseType.setErrorCode(slException.getErrorCode()); - responseType.setInfo(slException.getLocalizedMessage(locale)); - response = factory.createErrorResponse(responseType); - marshaller = SLMarshallerFactory.getInstance().createMarshaller(true, fragment); - } - - try { - if (transformerHandler != null) { - marshaller.marshal(response, transformerHandler); - } else { - marshaller.marshal(response, result); - } - } catch (JAXBException e) { - log.fatal("Failed to marshall error result." , e); - throw new SLRuntimeException("Failed to marshall error result."); - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java deleted file mode 100644 index e903c608..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java +++ /dev/null @@ -1,242 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import iaik.asn1.CodingException; -import iaik.asn1.DerCoder; -import iaik.utils.Base64OutputStream; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.StringWriter; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.NoSuchElementException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.idlink.ans1.IdentityLink; -import at.gv.egiz.stal.ErrorResponse; -import at.gv.egiz.stal.InfoboxReadResponse; -import at.gv.egiz.stal.STAL; -import at.gv.egiz.stal.STALRequest; -import at.gv.egiz.stal.STALResponse; - -/** - * A helper class for transmitting {@link STALRequest}s and obtaining their - * respective {@link STALResponse}s. - * - * @author mcentner - */ -public class STALHelper { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(STALHelper.class); - - /** - * The STAL implementation. - */ - private STAL stal; - - /** - * An iterator over the STALResponses received in - * {@link SLCommandImpl#transmitSTALRequest(List)}. - */ - protected Iterator stalResponses; - - /** - * Creates a new instance of this STALHelper with the given - * stal. - * - * @param stal the STAL to be used - */ - public STALHelper(STAL stal) { - if (stal == null) { - throw new NullPointerException("Argument 'stal' must not be null."); - } - this.stal = stal; - } - - /** - * Calls {@link STAL#handleRequest(List)} with the given - * stalRequests. - * - * @param stalRequests - * @throws SLCommandException - */ - public void transmitSTALRequest(List stalRequests) throws SLCommandException { - List responses = stal.handleRequest(stalRequests); - if (responses == null) { - Log log = LogFactory.getLog(this.getClass()); - log.info("Received no responses from STAL."); - throw new SLCommandException(4000); - } else if (responses.size() != stalRequests.size()) { - Log log = LogFactory.getLog(this.getClass()); - log.info("Received invalid count of responses from STAL. Expected " - + stalRequests.size() + ", but got " + responses.size() + "."); - // throw new SLCommandException(4000); - } - stalResponses = responses.iterator(); - } - - /** - * @return true if there are more {@link STALResponse}s to be - * fetched with {@link #nextResponse(Class)}, or false - * otherwise. - */ - public boolean hasNextResponse() { - return (stalResponses != null) ? stalResponses.hasNext() : false; - } - - /** - * Returns the next response of type responseClass that has been - * received by {@link #transmitSTALRequest(List)}. - * - * @param responseClass - * the response must be an instance of - * @return the next response of type responseClass - * - * @throws NoSuchElementException - * if there is no more response - * @throws SLCommandException - * if the next response is of type {@link ErrorResponse} or not of - * type responseClass - */ - public STALResponse nextResponse( - Class responseClass) throws SLCommandException { - - if (stalResponses == null) { - throw new NoSuchElementException(); - } - - STALResponse response = stalResponses.next(); - - if (response instanceof ErrorResponse) { - throw new SLCommandException(((ErrorResponse) response).getErrorCode()); - } - - if (!(responseClass.isAssignableFrom(response.getClass()))) { - Log log = LogFactory.getLog(this.getClass()); - log.info("Received " + response.getClass() + " from STAL but expected " - + responseClass); - throw new SLCommandException(4000); - } - - return response; - - } - - /** - * Gets the list of certificates from the next STAL responses. - * - * @return the list of certificates - * - * @throws SLCommandException if getting the list of certificates fails - */ - public List getCertificatesFromResponses() throws SLCommandException { - - List certificates = new ArrayList(); - - CertificateFactory certFactory; - try { - certFactory = CertificateFactory.getInstance("X509"); - } catch (CertificateException e) { - // we should always be able to get an X509 certificate factory - log.error("CertificateFactory.getInstance(\"X509\") failed.", e); - throw new SLRuntimeException(e); - } - - InfoboxReadResponse response; - while(hasNextResponse()) { - response = (InfoboxReadResponse) nextResponse(InfoboxReadResponse.class); - byte[] cert = response.getInfoboxValue(); - try { - certificates.add((X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(cert))); - } catch (CertificateException e) { - if (log.isDebugEnabled()) { - ByteArrayOutputStream certDump = new ByteArrayOutputStream(); - OutputStreamWriter writer = new OutputStreamWriter(certDump); - try { - writer.write("-----BEGIN CERTIFICATE-----\n"); - writer.flush(); - Base64OutputStream b64os = new Base64OutputStream(certDump); - b64os.write(cert); - b64os.flush(); - writer.write("\n-----END CERTIFICATE-----"); - writer.flush(); - } catch (IOException e1) { - log.info("Failed to decode certificate.", e); - } - log.debug("Failed to decode certificate.\n" + certDump.toString(), e); - } else { - log.info("Failed to decode certificate.", e); - } - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID, - new Object[] { "Certificates" }); - } - } - - return certificates; - - } - - /** - * Gets the IdentitiyLink form the next STAL response. - * - * @return the IdentityLink - * - * @throws SLCommandException if getting the IdentitiyLink fails - */ - public IdentityLink getIdentityLinkFromResponses() throws SLCommandException { - - // IdentityLink - InfoboxReadResponse response; - if (hasNextResponse()) { - response = (InfoboxReadResponse) nextResponse(InfoboxReadResponse.class); - byte[] idLink = response.getInfoboxValue(); - try { - return new IdentityLink(DerCoder.decode(idLink)); - } catch (CodingException e) { - log.info("Failed to decode infobox 'IdentityLink'.", e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID, - new Object[] { "IdentityLink" }); - } - } else { - log.info("No infobox 'IdentityLink' returned from STAL."); - throw new SLCommandException(4000); - } - - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java deleted file mode 100644 index 7e204632..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java +++ /dev/null @@ -1,323 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl; - -import iaik.asn1.ASN; -import iaik.asn1.ASN1Object; -import iaik.asn1.CodingException; -import iaik.asn1.DerCoder; -import iaik.asn1.NumericString; -import iaik.asn1.OCTET_STRING; -import iaik.asn1.ObjectID; -import iaik.asn1.SEQUENCE; -import iaik.asn1.SET; -import iaik.asn1.UNKNOWN; -import iaik.asn1.structures.ChoiceOfTime; - -import java.io.IOException; -import java.math.BigInteger; -import java.nio.charset.Charset; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.TimeZone; - -import javax.xml.datatype.DatatypeFactory; -import javax.xml.datatype.XMLGregorianCalendar; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.buergerkarte.namespaces.cardchannel.AttributeList; -import at.buergerkarte.namespaces.cardchannel.AttributeType; -import at.buergerkarte.namespaces.cardchannel.ObjectFactory; -import at.gv.egiz.bku.slcommands.SLCommandContext; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; -import at.gv.egiz.stal.InfoboxReadRequest; -import at.gv.egiz.stal.InfoboxReadResponse; -import at.gv.egiz.stal.STALRequest; - -/** - * An implementation of the {@link Infobox} Certificates as - * specified in Security Layer 1.2. - * - * @author mcentner - */ -public class SVPersonendatenInfoboxImpl extends AbstractAssocArrayInfobox { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(SVPersonendatenInfoboxImpl.class); - - public static final String EHIC = "EHIC"; - - public static final String GRUNDDATEN = "Grunddaten"; - - public static final String STATUS = "Status"; - - public static final String SV_PERSONENBINDUNG = "SV-Personenbindung"; - - /** - * The valid keys. - */ - public static final String[] KEYS = new String[] { - GRUNDDATEN, EHIC, STATUS, SV_PERSONENBINDUNG - }; - - @Override - public String getIdentifier() { - return "SV-Personendaten"; - } - - @Override - public String[] getKeys() { - return KEYS; - } - - @Override - public boolean isValuesAreXMLEntities() { - return true; - } - - @Override - public Map getValues(List keys, SLCommandContext cmdCtx) throws SLCommandException { - - STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL()); - - if (keys != null && !keys.isEmpty()) { - - List stalRequests = new ArrayList(); - - // get values - InfoboxReadRequest infoboxReadRequest; - for (int i = 0; i < keys.size(); i++) { - infoboxReadRequest = new InfoboxReadRequest(); - infoboxReadRequest.setInfoboxIdentifier(keys.get(i)); - stalRequests.add(infoboxReadRequest); - } - - stalHelper.transmitSTALRequest(stalRequests); - - Map values = new HashMap(); - - try { - for (int i = 0; i < keys.size(); i++) { - - String key = keys.get(i); - InfoboxReadResponse nextResponse = (InfoboxReadResponse) stalHelper.nextResponse(InfoboxReadResponse.class); - - - ObjectFactory objectFactory = new ObjectFactory(); - - if (EHIC.equals(key)) { - AttributeList attributeList = createAttributeList(nextResponse.getInfoboxValue()); - values.put(key, objectFactory.createEHIC(attributeList)); - } else if (GRUNDDATEN.equals(key)) { - AttributeList attributeList = createAttributeList(nextResponse.getInfoboxValue()); - values.put(key, objectFactory.createGrunddaten(attributeList)); - } else if (SV_PERSONENBINDUNG.equals(key)) { - values.put(key, objectFactory.createSVPersonenbindung(nextResponse.getInfoboxValue())); - } else if (STATUS.equals(key)) { - AttributeList attributeList = createAttributeListFromRecords(nextResponse.getInfoboxValue()); - values.put(key, objectFactory.createStatus(attributeList)); - } - - } - } catch (CodingException e) { - log.info("Failed to decode '" + getIdentifier() + "' infobox.", e); - throw new SLCommandException(4000, - SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID, - new Object[] { "IdentityLink" }); - - } - - return values; - - } else { - - return new HashMap(); - - } - - - } - - public static AttributeList createAttributeList(byte[] infoboxValue) throws CodingException { - - ObjectFactory objectFactory = new ObjectFactory(); - - ASN1Object asn1 = DerCoder.decode(infoboxValue); - - AttributeList attributeList = objectFactory.createAttributeList(); - List attributes = attributeList.getAttribute(); - - if (asn1.isA(ASN.SEQUENCE)) { - for (int i = 0; i < ((SEQUENCE) asn1).countComponents(); i++) { - - AttributeType attributeType = objectFactory.createAttributeType(); - - if (asn1.getComponentAt(i).isA(ASN.SEQUENCE)) { - SEQUENCE attribute = (SEQUENCE) asn1.getComponentAt(i); - if (attribute.getComponentAt(0).isA(ASN.ObjectID)) { - ObjectID objectId = (ObjectID) attribute.getComponentAt(0); - attributeType.setOid("urn:oid:" + objectId.getID()); - } - if (attribute.getComponentAt(1).isA(ASN.SET)) { - SET values = (SET) attribute.getComponentAt(1); - for (int j = 0; j < values.countComponents(); j++) { - setAttributeValue(attributeType, values.getComponentAt(j)); - } - } - } - - attributes.add(attributeType); - - } - - } - - return attributeList; - - } - - public static AttributeList createAttributeListFromRecords(byte[] infoboxValue) throws CodingException { - - ObjectFactory objectFactory = new ObjectFactory(); - - AttributeList attributeList = objectFactory.createAttributeList(); - List attributes = attributeList.getAttribute(); - - byte[] records = infoboxValue; - - while (records != null && records.length > 0) { - - int length; - - if (records[0] != 0x00) { - - ASN1Object asn1 = DerCoder.decode(records); - - AttributeType attributeType = objectFactory.createAttributeType(); - - if (asn1.isA(ASN.SEQUENCE)) { - SEQUENCE attribute = (SEQUENCE) asn1; - if (attribute.getComponentAt(0).isA(ASN.ObjectID)) { - ObjectID objectId = (ObjectID) attribute.getComponentAt(0); - attributeType.setOid("urn:oid:" + objectId.getID()); - } - if (attribute.getComponentAt(1).isA(ASN.SET)) { - SET values = (SET) attribute.getComponentAt(1); - for (int j = 0; j < values.countComponents(); j++) { - setAttributeValue(attributeType, values.getComponentAt(j)); - } - } - } - - attributes.add(attributeType); - - length = DerCoder.encode(asn1).length; - - } else { - length = 1; - } - - if (length < records.length) { - records = Arrays.copyOfRange(records, length + 1, records.length); - } else { - records = null; - } - - } - - return attributeList; - - } - - private static void setAttributeValue(AttributeType attributeType, ASN1Object value) { - - if (value.isA(ASN.OCTET_STRING)) { - - try { - byte[] octets = ((OCTET_STRING) value).getWholeValue(); - attributeType.setLatin1String(new String(octets, Charset.forName("ISO-8859-1"))); - } catch (IOException e) { - log.info("Failed to set Latin1String.", e); - } - - } else if (value.isA(ASN.NumericString)) { - - attributeType.setNumericString((String) ((NumericString) value).getValue()); - - } else if (value.isA(ASN.GeneralizedTime)) { - - try { - ChoiceOfTime choiceOfTime = new ChoiceOfTime(value); - - GregorianCalendar gregorianCalendar = new GregorianCalendar(); - gregorianCalendar.setTimeZone(TimeZone.getTimeZone("UTC")); - gregorianCalendar.setTime(choiceOfTime.getDate()); - - DatatypeFactory datatypeFactory = DatatypeFactory.newInstance(); - XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar(gregorianCalendar); - xmlGregorianCalendar.setTimezone(0); - - attributeType.setGeneralizedTime(xmlGregorianCalendar); - } catch (Exception e) { - log.info("Failed to set GeneralizedTime.", e); - } - - } else if (value.isA(ASN.INTEGER)) { - - attributeType.setInteger((BigInteger) value.getValue()); - - } else if (value.isA(ASN.UTF8String)) { - - attributeType.setUTF8String((String) value.getValue()); - - } else if (value.isA(ASN.PrintableString)) { - - attributeType.setPrintableString((String) value.getValue()); - - } else if (value.isA(ASN.UNKNOWN)) { - - byte[] bytes = (byte[]) ((UNKNOWN) value).getValue(); - - try { - BigInteger bigInteger = new BigInteger(bytes); - String string = bigInteger.toString(16); - - Date date = new SimpleDateFormat("yyyyMMdd").parse(string); - attributeType.setDate(new SimpleDateFormat("yyyy-MM-dd").format(date)); - } catch (Exception e) { - log.info("Failed to set Date.", e); - } - } - - } - - - - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java deleted file mode 100644 index d6cbaefa..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java +++ /dev/null @@ -1,79 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.security.InvalidAlgorithmParameterException; -import java.security.NoSuchAlgorithmException; - -import javax.xml.crypto.AlgorithmMethod; -import javax.xml.crypto.dsig.CanonicalizationMethod; -import javax.xml.crypto.dsig.DigestMethod; -import javax.xml.crypto.dsig.SignatureMethod; - -/** - * A factory for creating {@link AlgorithmMethod}s. - * - * @author mcentner - */ -public interface AlgorithmMethodFactory { - - /** - * Creates a new DigestMethod for the given signatureContext. - * - * @param signatureContext - * the signature context - * - * @return a DigestMethod for the given signatureContext - * - * @throws NoSuchAlgorithmException - * @throws InvalidAlgorithmParameterException - */ - public DigestMethod createDigestMethod(SignatureContext signatureContext) - throws NoSuchAlgorithmException, InvalidAlgorithmParameterException; - - /** - * Creates a new SignatureMethod for the given signatureContext. - * - * @param signatureContext - * the signature context - * - * @return a SignatureMethod for the given signatureContext - * - * @throws NoSuchAlgorithmException - * @throws InvalidAlgorithmParameterException - */ - public SignatureMethod createSignatureMethod(SignatureContext signatureContext) - throws NoSuchAlgorithmException, InvalidAlgorithmParameterException; - - /** - * Creates a new CanonicalizationMethod for the given - * signatureContext. - * - * @param signatureContext - * the signature context - * - * @return a CanonicalizationMethod for the given - * signatureContext - * - * @throws NoSuchAlgorithmException - * @throws InvalidAlgorithmParameterException - */ - public CanonicalizationMethod createCanonicalizationMethod( - SignatureContext signatureContext) throws NoSuchAlgorithmException, - InvalidAlgorithmParameterException; - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java deleted file mode 100644 index 8391e450..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java +++ /dev/null @@ -1,172 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import iaik.security.ecc.interfaces.ECDSAParams; -import iaik.xml.crypto.XmldsigMore; - -import java.security.InvalidAlgorithmParameterException; -import java.security.NoSuchAlgorithmException; -import java.security.PublicKey; -import java.security.cert.X509Certificate; -import java.security.interfaces.ECPublicKey; -import java.security.interfaces.RSAPublicKey; -import java.security.spec.ECParameterSpec; - -import javax.xml.crypto.dsig.CanonicalizationMethod; -import javax.xml.crypto.dsig.DigestMethod; -import javax.xml.crypto.dsig.SignatureMethod; -import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec; -import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec; -import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec; - -/** - * An implementation of the AlgorithmMethod factory that uses the signing - * certificate to choose appropriate algorithms. - * - * @author mcentner - */ -public class AlgorithmMethodFactoryImpl implements AlgorithmMethodFactory { - - /** - * Use SHA-2? - */ - private static boolean SHA2 = false; - - /** - * The signature algorithm URI. - */ - private String signatureAlgorithmURI; - - /** - * the digest algorithm URI. - */ - private String digestAlgorithmURI = DigestMethod.SHA1; - - /** - * The algorithm parameters for the signature algorithm. - */ - private SignatureMethodParameterSpec signatureMethodParameterSpec; - - /** - * Creates a new AlgrithmMethodFactory with the given - * signingCertificate. - * - * @param signingCertificate - * - * @throws NoSuchAlgorithmException - * if the public key algorithm of the given - * signingCertificate is not supported - */ - public AlgorithmMethodFactoryImpl(X509Certificate signingCertificate) - throws NoSuchAlgorithmException { - - PublicKey publicKey = signingCertificate.getPublicKey(); - String algorithm = publicKey.getAlgorithm(); - - if ("DSA".equals(algorithm)) { - signatureAlgorithmURI = SignatureMethod.DSA_SHA1; - } else if ("RSA".equals(algorithm)) { - - int keyLength = 0; - if (publicKey instanceof RSAPublicKey) { - keyLength = ((RSAPublicKey) publicKey).getModulus().bitLength(); - } - - if (SHA2 && keyLength >= 2048) { - signatureAlgorithmURI = XmldsigMore.SIGNATURE_RSA_SHA256; - digestAlgorithmURI = DigestMethod.SHA256; - } else { - signatureAlgorithmURI = SignatureMethod.RSA_SHA1; - } - - } else if (("EC".equals(algorithm)) || ("ECDSA".equals(algorithm))) { - - int fieldSize = 0; - if (publicKey instanceof iaik.security.ecc.ecdsa.ECPublicKey) { - ECDSAParams params = ((iaik.security.ecc.ecdsa.ECPublicKey) publicKey).getParameter(); - fieldSize = params.getG().getCurve().getField().getSize().bitLength(); - } else if (publicKey instanceof ECPublicKey) { - ECParameterSpec params = ((ECPublicKey) publicKey).getParams(); - fieldSize = params.getCurve().getField().getFieldSize(); - } - - if (SHA2 && fieldSize >= 512) { - signatureAlgorithmURI = XmldsigMore.SIGNATURE_ECDSA_SHA512; - digestAlgorithmURI = DigestMethod.SHA512; - } else if (SHA2 && fieldSize >= 256) { - signatureAlgorithmURI = XmldsigMore.SIGNATURE_ECDSA_SHA256; - digestAlgorithmURI = DigestMethod.SHA256; - } else { - signatureAlgorithmURI = XmldsigMore.SIGNATURE_ECDSA_SHA1; - } - - } else { - throw new NoSuchAlgorithmException("Public key algorithm '" + algorithm - + "' not supported."); - } - - } - - /* - * (non-Javadoc) - * - * @seeat.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory# - * createCanonicalizationMethod - * (at.gv.egiz.bku.slcommands.impl.xsect.SignatureContext) - */ - @Override - public CanonicalizationMethod createCanonicalizationMethod( - SignatureContext signatureContext) throws NoSuchAlgorithmException, - InvalidAlgorithmParameterException { - - return signatureContext.getSignatureFactory().newCanonicalizationMethod( - CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null); - - } - - /* - * (non-Javadoc) - * - * @see - * at.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory#createDigestMethod - * (at.gv.egiz.bku.slcommands.impl.xsect.SignatureContext) - */ - @Override - public DigestMethod createDigestMethod(SignatureContext signatureContext) - throws NoSuchAlgorithmException, InvalidAlgorithmParameterException { - - return signatureContext.getSignatureFactory().newDigestMethod( - digestAlgorithmURI, (DigestMethodParameterSpec) null); - } - - /* - * (non-Javadoc) - * - * @seeat.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory# - * createSignatureMethod - * (at.gv.egiz.bku.slcommands.impl.xsect.SignatureContext) - */ - @Override - public SignatureMethod createSignatureMethod(SignatureContext signatureContext) - throws NoSuchAlgorithmException, InvalidAlgorithmParameterException { - - return signatureContext.getSignatureFactory().newSignatureMethod( - signatureAlgorithmURI, signatureMethodParameterSpec); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java deleted file mode 100644 index a6473a05..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java +++ /dev/null @@ -1,65 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.io.ByteArrayInputStream; - -import javax.xml.crypto.Data; -import javax.xml.crypto.OctetStreamData; -import javax.xml.crypto.URIDereferencer; -import javax.xml.crypto.URIReference; -import javax.xml.crypto.URIReferenceException; -import javax.xml.crypto.XMLCryptoContext; - -/** - * An URIDereferencer implementation that dereferences the given - * byte array. - * - * @author mcentner - */ -public class ByteArrayDereferencer implements URIDereferencer { - - /** - * The dereferenced data. - */ - protected byte[] dereferencedData; - - /** - * Creates a new instance of this ByteArrayDereferencer with - * the given dereferencedData. - * - * @param dereferencedData the octets to be returned by {@link #dereference(URIReference, XMLCryptoContext)} - * - * @throws NullPointerException if dereferencedData is null - */ - public ByteArrayDereferencer(byte[] dereferencedData) { - if (dereferencedData == null) { - throw new NullPointerException("Parameter 'dereferencedData' must not be null."); - } - this.dereferencedData = dereferencedData; - } - - /* (non-Javadoc) - * @see javax.xml.crypto.URIDereferencer#dereference(javax.xml.crypto.URIReference, javax.xml.crypto.XMLCryptoContext) - */ - @Override - public Data dereference(URIReference uriReference, XMLCryptoContext context) - throws URIReferenceException { - return new OctetStreamData(new ByteArrayInputStream(dereferencedData)); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java deleted file mode 100644 index a57a11dd..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java +++ /dev/null @@ -1,1289 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import iaik.xml.crypto.dom.DOMCryptoContext; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.SequenceInputStream; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.net.URISyntaxException; -import java.nio.charset.Charset; -import java.security.InvalidAlgorithmParameterException; -import java.security.NoSuchAlgorithmException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.xml.crypto.MarshalException; -import javax.xml.crypto.dom.DOMStructure; -import javax.xml.crypto.dsig.CanonicalizationMethod; -import javax.xml.crypto.dsig.DigestMethod; -import javax.xml.crypto.dsig.Reference; -import javax.xml.crypto.dsig.Transform; -import javax.xml.crypto.dsig.XMLObject; -import javax.xml.crypto.dsig.spec.TransformParameterSpec; -import javax.xml.crypto.dsig.spec.XPathFilter2ParameterSpec; -import javax.xml.crypto.dsig.spec.XPathType; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.DOMConfiguration; -import org.w3c.dom.DOMException; -import org.w3c.dom.Document; -import org.w3c.dom.DocumentFragment; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.Text; -import org.w3c.dom.bootstrap.DOMImplementationRegistry; -import org.w3c.dom.ls.DOMImplementationLS; -import org.w3c.dom.ls.LSException; -import org.w3c.dom.ls.LSInput; -import org.w3c.dom.ls.LSOutput; -import org.w3c.dom.ls.LSParser; -import org.w3c.dom.ls.LSSerializer; - -import at.buergerkarte.namespaces.securitylayer._1.Base64XMLLocRefOptRefContentType; -import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType; -import at.buergerkarte.namespaces.securitylayer._1.MetaInfoType; -import at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType; -import at.gv.egiz.bku.binding.HttpUtil; -import at.gv.egiz.bku.gui.viewer.MimeTypes; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLRequestException; -import at.gv.egiz.bku.slexceptions.SLRuntimeException; -import at.gv.egiz.bku.slexceptions.SLViewerException; -import at.gv.egiz.bku.utils.urldereferencer.StreamData; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; -import at.gv.egiz.bku.viewer.ValidationException; -import at.gv.egiz.bku.viewer.Validator; -import at.gv.egiz.bku.viewer.ValidatorFactory; -import at.gv.egiz.dom.DOMUtils; -import at.gv.egiz.slbinding.impl.XMLContentType; -import java.io.File; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; - -/** - * This class represents a DataObject of an XML-Signature - * created by the security layer command CreateXMLSignature. - * - * @author mcentner - */ -public class DataObject { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(DataObject.class); - - /** - * DOM Implementation. - */ - private static final String DOM_LS_3_0 = "LS 3.0"; - - /** - * The array of the default preferred MIME type order. - */ - private static final String[] DEFAULT_PREFFERED_MIME_TYPES = - new String[] { - "text/plain", - "application/xhtml+xml" - }; - - /** - * Validate hash input. - */ - private static boolean validate = false; - - /** - * Enable validation of hash data input. - * - * @param validate - * true if validation should be enabled, or - * false otherwise. - */ - public static void enableHashDataInputValidation(boolean validate) { - DataObject.validate = validate; - } - - /** - * @return true if hash data input validation is enabled, - * or false otherwise. - */ - public static boolean isHashDataInputValidationEnabled() { - return validate; - } - - /** - * Valid MIME types. - */ - private static String[] validMimeTypes = DEFAULT_PREFFERED_MIME_TYPES; - - /** - * Sets the list of valid hash data input media types. - *

The array is also used for transformation path selection. - * The transformation path with a final type, that appears in the - * given array in the earliest position is used selected.

- * - * @param mediaTypes an array of MIME media types. - */ - public static void setValidHashDataInputMediaTypes(String[] mediaTypes) { - validMimeTypes = mediaTypes; - } - - /** - * The DOM implementation used. - */ - private DOMImplementationLS domImplLS; - - /** - * The signature context. - */ - private SignatureContext ctx; - - /** - * The Reference for this DataObject. - */ - private XSECTReference reference; - - /** - * The XMLObject for this DataObject. - */ - private XMLObject xmlObject; - - /** - * The MIME-Type of the digest input. - */ - private String mimeType; - - /** - * An optional description of the digest input. - */ - private String description; - - private String filename; - - /** - * Creates a new instance. - * - * @param document the document of the target signature - */ - public DataObject(SignatureContext signatureContext) { - this.ctx = signatureContext; - - DOMImplementationRegistry registry; - try { - registry = DOMImplementationRegistry.newInstance(); - } catch (Exception e) { - log.error("Failed to get DOMImplementationRegistry.", e); - throw new SLRuntimeException("Failed to get DOMImplementationRegistry."); - } - - domImplLS = (DOMImplementationLS) registry.getDOMImplementation(DOM_LS_3_0); - if (domImplLS == null) { - log.error("Failed to get DOMImplementation " + DOM_LS_3_0); - throw new SLRuntimeException("Failed to get DOMImplementation " + DOM_LS_3_0); - } - - } - - /** - * @return the reference - */ - public Reference getReference() { - return reference; - } - - /** - * @return the xmlObject - */ - public XMLObject getXmlObject() { - return xmlObject; - } - - /** - * @return the mimeType - */ - public String getMimeType() { - return mimeType; - } - - public String getFilename() { - return filename; - } - - /** - * @return the description - */ - public String getDescription() { - return description; - } - - public void validateHashDataInput() throws SLViewerException { - - if (validate) { - - if (reference == null) { - log.error("Medthod validateHashDataInput() called before reference has been created."); - throw new SLViewerException(5000); - } - - InputStream digestInputStream = reference.getDigestInputStream(); - if (digestInputStream == null) { - log.error("Method validateHashDataInput() called before reference has been generated " + - "or reference caching is not enabled."); - throw new SLViewerException(5000); - } - - if (mimeType == null) { - log.info("FinalDataMetaInfo does not specify MIME type of to be signed data."); - // TODO: add detailed message - throw new SLViewerException(5000); - } - - // get MIME media type - String mediaType = mimeType.split(";")[0].trim(); - // and optional charset - String charset = HttpUtil.getCharset(mimeType, false); - - if (Arrays.asList(validMimeTypes).contains(mediaType)) { - - Validator validator; - try { - validator = ValidatorFactory.newValidator(mediaType); - } catch (IllegalArgumentException e) { - log.error("No validator found for mime type '" + mediaType + "'."); - throw new SLViewerException(5000); - } - - try { - validator.validate(digestInputStream, charset); - } catch (ValidationException e) { - if ("text/plain".equals(mediaType)) { - log.info("Data to be displayed contains unsupported characters.", e); - // TODO: add detailed message - throw new SLViewerException(5003); - } else if ("application/xhtml+xml".equals(mediaType)) { - // TODO: add detailed message - log.info("Standard display format: HTML does not conform to specification.", e); - throw new SLViewerException(5004); - } else { - // TODO: add detailed message - log.info("Data to be displayed is invalid.", e); - throw new SLViewerException(5000); - } - } - - } else { - log.debug("MIME media type '" + mediaType + "' is not a s/valid/SUPPORTED digest input, omitting validation."); - } - } - - } - - /** - * Configures this DataObject with the information provided within the given - * sl:DataObjectInfo. - * - * @param dataObjectInfo - * the sl:DataObjectInfo - * - * @throws SLCommandException - * if configuring this DataObject with the information provided in - * the sl:DataObjectInfo fails. - * @throws SLRequestException - * if the information provided in the sl:DataObjectInfo - * does not conform to the security layer specification. - * @throws NullPointerException - * if dataObjectInfo is null - */ - public void setDataObjectInfo(DataObjectInfoType dataObjectInfo) throws SLCommandException, SLRequestException { - - Base64XMLLocRefOptRefContentType dataObject = dataObjectInfo.getDataObject(); - String structure = dataObjectInfo.getStructure(); - - // select and unmarshal an appropriate transformation path if provided - // and set the final data meta information - XSECTTransforms transforms = createTransformsAndSetFinalDataMetaInfo(dataObjectInfo.getTransformsInfo()); - - if ("enveloping".equals(structure)) { - - // configure this DataObject as an enveloped DataObject - setEnvelopedDataObject(dataObject, transforms); - - } else if ("detached".equals(structure)) { - - // configure this DataObject as an detached DataObject - setDetachedDataObject(dataObject, transforms); - - } - // other values are not allowed by the schema and are therefore ignored - - this.filename = deriveFilename(); - } - - /** - * Extract filename from reference URI - * or propose reference Id with an apropriate (mime-type) file extension - * - * @return if neither reference nor id can be extracted return null (or data.extension?) - */ - private String deriveFilename() { - - String filename = null; - - if (reference != null) { - if (reference.getURI() != null && !"".equals(reference.getURI())) { - try { - log.info("deriving filename from reference URI " + reference.getURI()); - URI refURI = new URI(reference.getURI()); - - if (refURI.isOpaque()) { - // could check scheme component, but also allow other schemes (e.g. testlocal) - log.trace("opaque reference URI, use scheme-specific part as filename"); - filename = refURI.getSchemeSpecificPart(); - if (!hasExtension(filename)) { - filename += MimeTypes.getExtension(mimeType); - } - // else hierarchical URI: - // for shorthand xpointer use fragment as filename, - // for any other xpointer use reference Id and - // for any other hierarchical (absolute or relative) use filename (ignore fragment, see xmldsig section 4.3.3.2: fragments not recommendet) - } else if ("".equals(refURI.getPath()) && - refURI.getFragment() != null && - refURI.getFragment().indexOf('(') < 0) { // exclude (schemebased) xpointer expressions - log.trace("fragment (shorthand xpointer) URI, use fragment as filename"); - filename = refURI.getFragment(); - if(!hasExtension(filename)) { - filename += MimeTypes.getExtension(mimeType); - } - } else if (!"".equals(refURI.getPath())) { - log.trace("hierarchical URI with path component, use path as filename"); - File refFile = new File(refURI.getPath()); - filename = refFile.getName(); - if(!hasExtension(filename)) { - filename += MimeTypes.getExtension(mimeType); - } - } else { - log.debug("failed to derive filename from URI '" + refURI + "', derive filename from reference ID"); - filename = reference.getId() + MimeTypes.getExtension(mimeType); - } - } catch (URISyntaxException ex) { - log.error("failed to derive filename from invalid URI " + ex.getMessage()); - filename = reference.getId() + MimeTypes.getExtension(mimeType); - } - } else { - log.debug("same-document URI, derive filename from reference ID"); - filename = reference.getId() + MimeTypes.getExtension(mimeType); - } - } else { - log.error("failed to derive filename, no reference created"); - } - log.debug("derived filename for reference " + reference.getId() + ": " + filename); - return filename; - } - - private static boolean hasExtension(String filename) { - int extDelimiterInd = filename.lastIndexOf('.'); - return extDelimiterInd >= 0 && extDelimiterInd >= filename.length() - 4; - } - - private byte[] getTransformsBytes(at.gv.egiz.slbinding.impl.TransformsInfoType ti) { - return ti.getRedirectedStream().toByteArray(); -// byte[] transformsBytes = ti.getRedirectedStream().toByteArray(); -// -// if (transformsBytes == null || transformsBytes.length == 0) { -// return null; -// } -// -// String dsigPrefix = ti.getNamespaceContext().getNamespaceURI("http://www.w3.org/2000/09/xmldsig#"); -// byte[] pre, post; -// if (dsigPrefix == null) { -// log.trace("XMLDSig not declared in outside dsig:Transforms"); -// pre = "".getBytes(); -// post = "".getBytes(); -// } else { -// log.trace("XMLDSig bound to prefix " + dsigPrefix); -// pre = ("").getBytes(); -// post = "".getBytes(); -// } -// -// byte[] workaround = new byte[pre.length + transformsBytes.length + post.length]; -// System.arraycopy(pre, 0, workaround, 0, pre.length); -// System.arraycopy(transformsBytes, 0, workaround, pre.length, transformsBytes.length); -// System.arraycopy(post, 0, workaround, pre.length + transformsBytes.length, post.length); -// return workaround; - } - - /** - * Configures this DataObject as an enveloped DataObject with the information - * provided within the given sl:DataObject. - * - * @param dataObject - * the sl:DataObject - * @param transforms - * an optional Transforms element (may be - * null) - * - * @throws SLCommandException - * if configuring this DataObject with the information provided in - * the sl:DataObject fails. - * @throws SLRequestException - * if the information provided in the sl:DataObject - * does not conform to the security layer specification. - * @throws NullPointerException - * if dataObject is null - */ - private void setEnvelopedDataObject( - Base64XMLLocRefOptRefContentType dataObject, XSECTTransforms transforms) - throws SLCommandException, SLRequestException { - - String reference = dataObject.getReference(); - if (reference == null) { - // - // case A - // - // The Reference attribute is not used; the content of sl:DataObject represents the data object. - // If the data object is XML-coded (the sl:XMLContent element is used in sl:DataObject), then it - // must be incorporated in the signature structure as parsed XML. - // - - if (dataObject.getBase64Content() != null) { - - log.debug("Adding DataObject (Base64Content) without a reference URI."); - - // create XMLObject - XMLObject xmlObject = createXMLObject(new ByteArrayInputStream(dataObject.getBase64Content())); - - setXMLObjectAndReferenceBase64(xmlObject, transforms); - - } else if (dataObject.getXMLContent() != null) { - - log.debug("Adding DataObject (XMLContent) without a reference URI."); - - // create XMLObject - DocumentFragment content = parseDataObject((XMLContentType) dataObject.getXMLContent()); - XMLObject xmlObject = createXMLObject(content); - - setXMLObjectAndReferenceXML(xmlObject, transforms); - - } else if (dataObject.getLocRefContent() != null) { - - log.debug("Adding DataObject (LocRefContent) without a reference URI."); - - setEnvelopedDataObject(dataObject.getLocRefContent(), transforms); - - } else { - - // not allowed - log.info("XML structure of the command request contains an " + - "invalid combination of optional elements or attributes. " + - "DataObject of structure='enveloped' without a reference must contain content."); - throw new SLRequestException(3003); - - } - - } else { - - if (dataObject.getBase64Content() == null && - dataObject.getXMLContent() == null && - dataObject.getLocRefContent() == null) { - - // - // case B - // - // The Reference attribute contains a URI that must be resolved by the - // Citizen Card Environment to obtain the data object. - // The content of sl:DataObject remains empty - // - - log.debug("Adding DataObject from reference URI '" + reference + "'."); - - setEnvelopedDataObject(reference, transforms); - - } else { - - // not allowed - log.info("XML structure of the command request contains an " + - "invalid combination of optional elements or attributes. " + - "DataObject of structure='enveloped' with reference must not contain content."); - throw new SLRequestException(3003); - - } - - - } - - } - - /** - * Configures this DataObject as an enveloped DataObject with the content to - * be dereferenced from the given reference. - * - * @param reference - * the reference URI - * @param transforms - * an optional Transforms element (may be - * null) - * - * @throws SLCommandException - * if dereferencing the given reference fails, or if - * configuring this DataObject with the data dereferenced from the - * given reference fails. - * @throws NullPointerException - * if reference is null - */ - private void setEnvelopedDataObject(String reference, XSECTTransforms transforms) throws SLCommandException { - - if (reference == null) { - throw new NullPointerException("Argument 'reference' must not be null."); - } - - // dereference URL - URLDereferencer dereferencer = URLDereferencer.getInstance(); - - StreamData streamData; - try { - streamData = dereferencer.dereference(reference, ctx.getDereferencerContext()); - } catch (IOException e) { - log.info("Failed to dereference XMLObject from '" + reference + "'.", e); - throw new SLCommandException(4110); - } - - Node childNode; - - String contentType = streamData.getContentType(); - if (contentType.startsWith("text/xml")) { - - // If content type is text/xml parse content. - String charset = HttpUtil.getCharset(contentType, true); - - Document doc = parseDataObject(streamData.getStream(), charset); - - childNode = doc.getDocumentElement(); - - if (childNode == null) { - log.info("Failed to parse XMLObject from '" + reference + "'."); - throw new SLCommandException(4111); - } - - XMLObject xmlObject = createXMLObject(childNode); - - setXMLObjectAndReferenceXML(xmlObject, transforms); - - } else { - - // Include content Base64 encoded. - XMLObject xmlObject = createXMLObject(streamData.getStream()); - - setXMLObjectAndReferenceBase64(xmlObject, transforms); - - } - - } - - /** - * Configures this DataObject as an detached DataObject with the information - * provided in the given sl:DataObject and optionally - * transforms. - * - * @param dataObject - * the sl:DataObject - * @param transforms - * an optional Transforms object, may be null - * - * @throws SLCommandException - * if configuring this DataObject with the information provided in - * the sl:DataObject fails. - * @throws SLRequestException - * if the information provided in the sl:DataObject - * does not conform to the security layer specification. - * @throws NullPointerException - * if dataObject is null - */ - private void setDetachedDataObject( - Base64XMLLocRefOptRefContentType dataObject, XSECTTransforms transforms) - throws SLCommandException, SLRequestException { - - String referenceURI = dataObject.getReference(); - - if (referenceURI == null) { - - // not allowed - log.info("XML structure of the command request contains an " + - "invalid combination of optional elements or attributes. " + - "DataObject of structure='detached' must contain a reference."); - throw new SLRequestException(3003); - - } else { - - DigestMethod dm; - try { - dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } catch (InvalidAlgorithmParameterException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } - - String idValue = ctx.getIdValueFactory().createIdValue("Reference"); - - reference = new XSECTReference(referenceURI, dm, transforms, null, idValue); - - // case D: - // - // The Reference attribute contains a URI that is used by the Citizen Card - // Environment to code the reference to the data object as part of the XML - // signature (attribute URI in the dsig:Reference) element. The content of - // sl:DataObject represents the data object. - - if (dataObject.getLocRefContent() != null) { - String locRef = dataObject.getLocRefContent(); - try { - this.reference.setDereferencer(new LocRefDereferencer(ctx.getDereferencerContext(), locRef)); - } catch (URISyntaxException e) { - log.info("Invalid URI '" + locRef + "' in DataObject.", e); - throw new SLCommandException(4003); - } catch (IllegalArgumentException e) { - log.info("LocRef URI of '" + locRef + "' not supported in DataObject. ", e); - throw new SLCommandException(4003); - } - } else if (dataObject.getBase64Content() != null) { - byte[] base64Content = dataObject.getBase64Content(); - this.reference.setDereferencer(new ByteArrayDereferencer(base64Content)); - } else if (dataObject.getXMLContent() != null) { - XMLContentType xmlContent = (XMLContentType) dataObject.getXMLContent(); - byte[] bytes = xmlContent.getRedirectedStream().toByteArray(); - this.reference.setDereferencer(new ByteArrayDereferencer(bytes)); - } else { - - // case C: - // - // The Reference attribute contains a URI that must be resolved by the - // Citizen Card Environment to obtain the data object. The Reference - // attribute contains a URI that is used by the Citizen Card Environment - // to code the reference to the data object as part of the XML signature - // (attribute URI in the dsig:Reference) element. The content of - // sl:DataObject remains empty. - - } - - } - } - - /** - * Returns the preferred sl:TransformInfo from the given list of - * transformInfos, or null if none of the given - * transformInfos is preferred over the others. - * - * @param transformsInfos - * a list of sl:TransformInfos - * - * @return the selected sl:TransformInfo or null, if - * none is preferred over the others - */ - private TransformsInfoType selectPreferredTransformsInfo(List transformsInfos) { - - Map mimeTypes = new HashMap(); - - StringBuilder debugString = null; - if (log.isDebugEnabled()) { - debugString = new StringBuilder(); - debugString.append("Got " + transformsInfos.size() + " TransformsInfo(s):"); - } - - for (TransformsInfoType transformsInfoType : transformsInfos) { - MetaInfoType finalDataMetaInfo = transformsInfoType.getFinalDataMetaInfo(); - String mimeType = finalDataMetaInfo.getMimeType(); - String description = finalDataMetaInfo.getDescription(); - mimeTypes.put(mimeType, transformsInfoType); - if (debugString != null) { - debugString.append("\n FinalDataMetaInfo: MIME-Type="); - debugString.append(mimeType); - if (description != null) { - debugString.append(" "); - debugString.append(description); - } - } - } - - if (debugString != null) { - log.debug(debugString); - } - - // look for preferred transform - for (String mimeType : DEFAULT_PREFFERED_MIME_TYPES) { - if (mimeTypes.containsKey(mimeType)) { - return mimeTypes.get(mimeType); - } - } - - // no preferred transform - return null; - - } - - /** - * Create an instance of ds:Transforms from the given - * sl:TransformsInfo. - * - * @param transformsInfo - * the sl:TransformsInfo - * - * @return a corresponding unmarshalled ds:Transforms, or - * null if the given sl:TransformsInfo does - * not contain a dsig:Transforms element - * - * @throws SLRequestException - * if the ds:Transforms in the given - * transformsInfo are not valid or cannot be parsed. - * - * @throws MarshalException - * if the ds:Transforms in the given - * transformsInfo cannot be unmarshalled. - */ - private XSECTTransforms createTransforms(TransformsInfoType transformsInfo) throws SLRequestException, MarshalException { - - byte[] transforms = getTransformsBytes((at.gv.egiz.slbinding.impl.TransformsInfoType) transformsInfo); - - if (transforms != null && transforms.length > 0) { - // debug - if (log.isTraceEnabled()) { - StringBuilder sb = new StringBuilder(); - sb.append("Trying to parse transforms:\n"); - sb.append(new String(transforms, Charset.forName("UTF-8"))); - log.trace(sb); - } - - DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS(); - LSInput input = domImplLS.createLSInput(); - input.setByteStream(new ByteArrayInputStream(transforms)); - - LSParser parser = domImplLS.createLSParser( - DOMImplementationLS.MODE_SYNCHRONOUS, null); - DOMConfiguration domConfig = parser.getDomConfig(); - SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler(); - domConfig.setParameter("error-handler", errorHandler); - domConfig.setParameter("validate", Boolean.FALSE); - - Document document; - try { - document = parser.parse(input); - } catch (DOMException e) { - log.info("Failed to parse dsig:Transforms.", e); - throw new SLRequestException(3002); - } catch (LSException e) { - log.info("Failed to parse dsig:Transforms.", e); - throw new SLRequestException(3002); - } - - // adopt ds:Transforms - Element transformsElt = document.getDocumentElement(); - Node adoptedTransforms = ctx.getDocument().adoptNode(transformsElt); - - DOMCryptoContext context = new DOMCryptoContext(); - - // unmarshall ds:Transforms - return new XSECTTransforms(context, adoptedTransforms); - - } else { - return null; - } - - -// TransformsType transformsType = transformsInfo.getTransforms(); -// if (transformsType == null) { -// return null; -// } -// List transformList = transformsType.getTransform(); -// -// DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS(); -//// Document transformsDoc = ((DOMImplementation) domImplLS).createDocument("http://www.w3.org/2000/09/xmldsig#", "Transforms", null); -//// Element transforms = transformsDoc.getDocumentElement(); -// Document transformsDoc = DOMUtils.createDocument(); -// Element transforms = transformsDoc.createElementNS( -// "http://www.w3.org/2000/09/xmldsig#", -// Signature.XMLDSIG_PREFIX + ":Transforms"); -// transformsDoc.appendChild(transforms); -// -// for (TransformType transformType : transformList) { -// log.trace("found " + transformType.getClass().getName()); -// Element transform = transformsDoc.createElementNS( -// "http://www.w3.org/2000/09/xmldsig#", -// Signature.XMLDSIG_PREFIX + ":Transform"); -// String algorithm = transformType.getAlgorithm(); -// if (algorithm != null) { -// log.trace("found algorithm " + algorithm); -// transform.setAttribute("Algorithm", algorithm); -// } -// -// at.gv.egiz.slbinding.impl.TransformType t = (at.gv.egiz.slbinding.impl.TransformType) transformType; -// byte[] redirectedBytes = t.getRedirectedStream().toByteArray(); -// if (redirectedBytes != null && redirectedBytes.length > 0) { -// if (log.isTraceEnabled()) { -// StringBuilder sb = new StringBuilder(); -// sb.append("Trying to parse dsig:Transform:\n"); -// sb.append(new String(redirectedBytes, Charset.forName("UTF-8"))); -// log.trace(sb); -// } -// LSInput input = domImplLS.createLSInput(); -// input.setByteStream(new ByteArrayInputStream(redirectedBytes)); -// -// LSParser parser = domImplLS.createLSParser( -// DOMImplementationLS.MODE_SYNCHRONOUS, null); -// DOMConfiguration domConfig = parser.getDomConfig(); -// SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler(); -// domConfig.setParameter("error-handler", errorHandler); -// domConfig.setParameter("validate", Boolean.FALSE); -// -// try { -// Document redirectedDoc = parser.parse(input); -// Node redirected = transformsDoc.adoptNode(redirectedDoc.getDocumentElement()); -// transform.appendChild(redirected); -// -// //not supported by Xerces2.9.1 -//// Node redirected = parser.parseWithContext(input, transform, LSParser.ACTION_APPEND_AS_CHILDREN); -// -// } catch (DOMException e) { -// log.info("Failed to parse dsig:Transform.", e); -// throw new SLRequestException(3002); -// } catch (LSException e) { -// log.info("Failed to parse dsig:Transform.", e); -// throw new SLRequestException(3002); -// } -// } -// transforms.appendChild(transform); -// } -// -// //adopt ds:Transforms -// Node adoptedTransforms = ctx.getDocument().adoptNode(transforms); -// DOMCryptoContext context = new DOMCryptoContext(); -// -// // unmarshall ds:Transforms -// return new XSECTTransforms(context, adoptedTransforms); - - } - - /** - * Sets the mimeType and the description value - * for this DataObject. - * - * @param metaInfoType the sl:FinalMetaDataInfo - * - * @throws NullPointerException if metaInfoType is null - */ - private void setFinalDataMetaInfo(MetaInfoType metaInfoType) { - - this.mimeType = metaInfoType.getMimeType(); - this.description = metaInfoType.getDescription(); - - } - - /** - * Selects an appropriate transformation path (if present) from the given list - * of sl:TransformInfos, sets the corresponding final data meta info and - * returns the corresponding unmarshalled ds:Transforms. - * - * @param transformsInfos the sl:TransformInfos - * - * @return the unmarshalled ds:Transforms, or null if - * no transformation path has been selected. - * - * @throws SLRequestException if the given list ds:TransformsInfo contains - * an invalid ds:Transforms element, or no suitable transformation path - * can be found. - */ - private XSECTTransforms createTransformsAndSetFinalDataMetaInfo( - List transformsInfos) throws SLRequestException { - - TransformsInfoType preferredTransformsInfo = selectPreferredTransformsInfo(transformsInfos); - // try preferred transform - if (preferredTransformsInfo != null) { - - try { - XSECTTransforms transforms = createTransforms(preferredTransformsInfo); - setFinalDataMetaInfo(preferredTransformsInfo.getFinalDataMetaInfo()); - return transforms; - } catch (MarshalException e) { - - String mimeType = preferredTransformsInfo.getFinalDataMetaInfo().getMimeType(); - log.info("Failed to unmarshal preferred transformation path (MIME-Type=" - + mimeType + ").", e); - - } - - } - - // look for another suitable transformation path - for (TransformsInfoType transformsInfoType : transformsInfos) { - - try { - XSECTTransforms transforms = createTransforms(transformsInfoType); - setFinalDataMetaInfo(transformsInfoType.getFinalDataMetaInfo()); - return transforms; - } catch (MarshalException e) { - - String mimeType = transformsInfoType.getFinalDataMetaInfo().getMimeType(); - log.info("Failed to unmarshal transformation path (MIME-Type=" - + mimeType + ").", e); - } - - } - - // no suitable transformation path found - throw new SLRequestException(3003); - - } - - /** - * Create an XMLObject with the Base64 encoding of the given - * content. - * - * @param content - * the to-be Base64 encoded content - * @return an XMLObject with the Base64 encoded content - */ - private XMLObject createXMLObject(InputStream content) { - - Text textNode; - try { - textNode = at.gv.egiz.dom.DOMUtils.createBase64Text(content, ctx.getDocument()); - } catch (IOException e) { - log.error(e); - throw new SLRuntimeException(e); - } - - DOMStructure structure = new DOMStructure(textNode); - - String idValue = ctx.getIdValueFactory().createIdValue("Object"); - - return ctx.getSignatureFactory().newXMLObject(Collections.singletonList(structure), idValue, null, null); - - } - - /** - * Create an XMLObject with the given content node. - * - * @param content the content node - * - * @return an XMLObject with the given content - */ - private XMLObject createXMLObject(Node content) { - - String idValue = ctx.getIdValueFactory().createIdValue("Object"); - - List structures = Collections.singletonList(new DOMStructure(content)); - - return ctx.getSignatureFactory().newXMLObject(structures, idValue, null, null); - - } - - /** - * Sets the given xmlObject and creates and sets a corresponding - * Reference. - *

- * A transform to Base64-decode the xmlObject's content is inserted at the top - * of to the optional transforms if given, or to a newly created - * Transforms element if transforms is - * null. - * - * @param xmlObject - * the XMLObject - * @param transforms - * an optional Transforms element (may be - * null) - * - * @throws SLCommandException - * if creating the Reference fails - * @throws NullPointerException - * if xmlObject is null - */ - private void setXMLObjectAndReferenceBase64(XMLObject xmlObject, XSECTTransforms transforms) throws SLCommandException { - - // create reference URI - // - // NOTE: the ds:Object can be referenced directly, as the Base64 transform - // operates on the text() of the input nodelist. - // - String referenceURI = "#" + xmlObject.getId(); - - // create Base64 Transform - Transform transform; - try { - transform = ctx.getSignatureFactory().newTransform(Transform.BASE64, (TransformParameterSpec) null); - } catch (NoSuchAlgorithmException e) { - // algorithm must be present - throw new SLRuntimeException(e); - } catch (InvalidAlgorithmParameterException e) { - // algorithm does not take parameters - throw new SLRuntimeException(e); - } - - if (transforms == null) { - transforms = new XSECTTransforms(Collections.singletonList(transform)); - } else { - transforms.insertTransform(transform); - } - - DigestMethod dm; - try { - dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } catch (InvalidAlgorithmParameterException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } - String id = ctx.getIdValueFactory().createIdValue("Reference"); - - this.xmlObject = xmlObject; - this.reference = new XSECTReference(referenceURI, dm, transforms, null, id); - - } - - /** - * Sets the given xmlObject and creates and sets a corresponding - * Reference. - *

- * A transform to select the xmlObject's content is inserted at the top of to - * the optional transforms if given, or to a newly created - * Transforms element if transforms is - * null. - *

- * - * @param xmlObject - * the XMLObject - * @param transforms - * an optional Transforms element (may be - * null) - * - * @throws SLCommandException - * if creating the Reference fails - * @throws NullPointerException - * if xmlObject is null - */ - private void setXMLObjectAndReferenceXML(XMLObject xmlObject, XSECTTransforms transforms) throws SLCommandException { - - // create reference URI - String referenceURI = "#" + xmlObject.getId(); - - // create Transform to select ds:Object's children - Transform xpathTransform; - Transform c14nTransform; - try { - - XPathType xpath = new XPathType("id(\"" + xmlObject.getId() + "\")/node()", XPathType.Filter.INTERSECT); - List xpaths = Collections.singletonList(xpath); - XPathFilter2ParameterSpec params = new XPathFilter2ParameterSpec(xpaths); - - xpathTransform = ctx.getSignatureFactory().newTransform(Transform.XPATH2, params); - - // add exclusive canonicalization to avoid signing the namespace context of the ds:Object - c14nTransform = ctx.getSignatureFactory().newTransform(CanonicalizationMethod.EXCLUSIVE, (TransformParameterSpec) null); - - } catch (NoSuchAlgorithmException e) { - // algorithm must be present - throw new SLRuntimeException(e); - } catch (InvalidAlgorithmParameterException e) { - // params must be appropriate - throw new SLRuntimeException(e); - } - - if (transforms == null) { - List newTransfroms = new ArrayList(); - newTransfroms.add(xpathTransform); - newTransfroms.add(c14nTransform); - transforms = new XSECTTransforms(newTransfroms); - } else { - transforms.insertTransform(xpathTransform); - } - - DigestMethod dm; - try { - dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } catch (InvalidAlgorithmParameterException e) { - log.error("Failed to get DigestMethod.", e); - throw new SLCommandException(4006); - } - String id = ctx.getIdValueFactory().createIdValue("Reference"); - - this.xmlObject = xmlObject; - this.reference = new XSECTReference(referenceURI, dm, transforms, null, id); - - } - - /** - * Parses the given xmlContent and returns a corresponding - * document fragment. - * - *

- * The to-be parsed content is surrounded by ... elements to - * allow for mixed (e.g. Text and Element) content in XMLContent. - *

- * - * @param xmlContent - * the XMLContent to-be parsed - * - * @return a document fragment containing the parsed nodes - * - * @throws SLCommandException - * if parsing the given xmlContent fails - * - * @throws NullPointerException - * if xmlContent is null - */ - private DocumentFragment parseDataObject(XMLContentType xmlContent) throws SLCommandException { - - ByteArrayOutputStream redirectedStream = xmlContent.getRedirectedStream(); - - // Note: We can assume a fixed character encoding of UTF-8 for the - // content of the redirect stream as the content has already been parsed - // and serialized again to the redirect stream. - - List inputStreams = new ArrayList(); - try { - // dummy start element - inputStreams.add(new ByteArrayInputStream("".getBytes("UTF-8"))); - - // content - inputStreams.add(new ByteArrayInputStream(redirectedStream.toByteArray())); - - // dummy end element - inputStreams.add(new ByteArrayInputStream("".getBytes("UTF-8"))); - } catch (UnsupportedEncodingException e) { - throw new SLRuntimeException(e); - } - - SequenceInputStream inputStream = new SequenceInputStream(Collections.enumeration(inputStreams)); - - // parse DataObject - Document doc = parseDataObject(inputStream, "UTF-8"); - - Element documentElement = doc.getDocumentElement(); - - if (documentElement == null || - !"dummy".equals(documentElement.getLocalName())) { - log.info("Failed to parse DataObject XMLContent."); - throw new SLCommandException(4111); - } - - DocumentFragment fragment = doc.createDocumentFragment(); - while (documentElement.getFirstChild() != null) { - fragment.appendChild(documentElement.getFirstChild()); - } - - // log parsed document - if (log.isTraceEnabled()) { - - StringWriter writer = new StringWriter(); - - writer.write("DataObject:\n"); - - LSOutput output = domImplLS.createLSOutput(); - output.setCharacterStream(writer); - output.setEncoding("UTF-8"); - LSSerializer serializer = domImplLS.createLSSerializer(); - serializer.getDomConfig().setParameter("xml-declaration", Boolean.FALSE); - serializer.write(fragment, output); - - log.trace(writer.toString()); - } - - return fragment; - - } - - /** - * Parses the given inputStream using the given - * encoding and returns the parsed document. - * - * @param inputStream - * the to-be parsed input - * - * @param encoding - * the encoding to be used for parsing the given - * inputStream - * - * @return the parsed document - * - * @throws SLCommandException - * if parsing the inputStream fails. - * - * @throws NullPointerException - * if inputStram is null - */ - private Document parseDataObject(InputStream inputStream, String encoding) throws SLCommandException { - - LSInput input = domImplLS.createLSInput(); - input.setByteStream(inputStream); - - if (encoding != null) { - input.setEncoding(encoding); - } - - LSParser parser = domImplLS.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null); - DOMConfiguration domConfig = parser.getDomConfig(); - SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler(); - domConfig.setParameter("error-handler", errorHandler); - domConfig.setParameter("validate", Boolean.FALSE); - - Document doc; - try { - doc = parser.parse(input); - } catch (DOMException e) { - log.info("Existing XML document cannot be parsed.", e); - throw new SLCommandException(4111); - } catch (LSException e) { - log.info("Existing XML document cannot be parsed. ", e); - throw new SLCommandException(4111); - } - - if (errorHandler.hasErrors()) { - // log errors - if (log.isInfoEnabled()) { - List errorMessages = errorHandler.getErrorMessages(); - StringBuffer sb = new StringBuffer(); - for (String errorMessage : errorMessages) { - sb.append(" "); - sb.append(errorMessage); - } - log.info("Existing XML document cannot be parsed. " + sb.toString()); - } - throw new SLCommandException(4111); - } - - return doc; - - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java deleted file mode 100644 index df42bd11..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -/** - * A factory for creating xsd:Id-attribute values. - * - * @author mcentner - */ -public interface IdValueFactory { - - /** - * Creates a new xsd:Id-attribute value for an Element of the - * given elementName. - * - * @param elementName - * the local name of the element to create the value for - * - * @return a xsd:Id-attribute value - */ - public String createIdValue(String elementName); - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java deleted file mode 100644 index b9824655..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java +++ /dev/null @@ -1,127 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.util.HashMap; -import java.util.Map; -import java.util.Random; - -/** - * An implementation of the IdValueFactory. - *

- * This IdValueFactory creates xsd:Id-attribute values of the form - * '<elementName>-<random>-<sequenceNumber>', - * where - *

    - *
  • <elementName> is the name provided at - * {@link #createIdValue(String)},
  • - *
  • <random> is a random generated fixed value for an - * instance of this IdValueFactory and
  • - *
  • <sequenceNumber> is the sequence number of the value - * generated for a given elementName by an instance of this - * IdValueFactory.
  • - *
- *

- * - * @author mcentner - */ -public class IdValueFactoryImpl implements IdValueFactory { - - /** - * A generator for xsd:Id-attribute values. - * - * @author mcentner - */ - private class IdGenerator { - - /** - * The salt. - */ - private String salt; - - /** - * The element name. - */ - private String elementName; - - /** - * The sequence number. - */ - private int i = 0; - - /** - * Creates a new instance of this IdGenerator with the given - * elementName and salt value. - * - * @param elementName the element name - * @param salt the salt valeu - */ - private IdGenerator(String elementName, String salt) { - super(); - this.elementName = elementName; - this.salt = salt; - } - - /** - * @return returns the next xsd:Id-attribute value. - */ - public String getNextId() { - return elementName + "-" + salt + "-" + Integer.toString(++i); - } - - } - - /** - * A map of element names to xsd:Id-value generators. - */ - private Map generators = new HashMap(); - - /** - * The seed value. - */ - private String seed; - - /** - * Creates a new instance of this IdValueFactory. - */ - public IdValueFactoryImpl() { - - Random random = new Random(); - int rand = random.nextInt(); - seed = Integer.toHexString(rand); - - } - - /* - * (non-Javadoc) - * - * @see - * at.gv.egiz.bku.slcommands.impl.IdValueFactory#createIdValue(java.lang.String - * ) - */ - public String createIdValue(String elementName) { - - IdGenerator generator = generators.get(elementName); - if (generator == null) { - generator = new IdGenerator(elementName, seed); - generators.put(elementName, generator); - } - return generator.getNextId(); - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java deleted file mode 100644 index f5394157..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java +++ /dev/null @@ -1,112 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.xml.crypto.Data; -import javax.xml.crypto.OctetStreamData; -import javax.xml.crypto.URIDereferencer; -import javax.xml.crypto.URIReference; -import javax.xml.crypto.URIReferenceException; -import javax.xml.crypto.XMLCryptoContext; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import at.gv.egiz.bku.utils.urldereferencer.StreamData; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; - -/** - * An URIDereferencer implementation that dereferences LocRef - * references. - * - * @author mcentner - */ -public class LocRefDereferencer implements URIDereferencer { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(LocRefDereferencer.class); - - /** - * The LocRef-reference to be dereferenced by - * {@link #dereference(URIReference, XMLCryptoContext)}. - */ - protected String locRef; - - /** - * The context to be used for dereferencing. - */ - protected URLDereferencerContext dereferencerContext; - - /** - * Creates a new instance of this LocRefDereferencer with the given - * dereferencerContext and locRef reference. - * - * @param dereferencerContext - * the context to be used for dereferencing - * @param locRef - * the LocRef-reference (must be an absolute URI) - * - * @throws URISyntaxException - * if LocRef is not an absolute URI - */ - public LocRefDereferencer(URLDereferencerContext dereferencerContext, - String locRef) throws URISyntaxException { - - this.dereferencerContext = dereferencerContext; - - URI locRefUri = new URI(locRef); - if (locRefUri.isAbsolute()) { - this.locRef = locRef; - } else { - throw new IllegalArgumentException( - "Parameter 'locRef' must be an absolut URI."); - } - } - - /* - * (non-Javadoc) - * - * @see - * javax.xml.crypto.URIDereferencer#dereference(javax.xml.crypto.URIReference, - * javax.xml.crypto.XMLCryptoContext) - */ - @Override - public Data dereference(URIReference uriReference, XMLCryptoContext context) - throws URIReferenceException { - - URLDereferencer dereferencer = URLDereferencer.getInstance(); - StreamData streamData; - try { - streamData = dereferencer.dereference(locRef, dereferencerContext); - } catch (IOException e) { - log.info("Failed to dereference URI'" + locRef + "'. " + e.getMessage(), - e); - throw new URIReferenceException("Failed to dereference URI '" + locRef - + "'. " + e.getMessage(), e); - } - return new OctetStreamData(streamData.getStream(), locRef, streamData - .getContentType()); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java deleted file mode 100644 index 25e2d4e5..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java +++ /dev/null @@ -1,128 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import at.gv.egiz.stal.HashDataInput; -import java.security.PrivateKey; - -import at.gv.egiz.stal.STAL; -//import at.gv.egiz.stal.HashDataInputCallback; -import java.util.List; - -/** - * This class implements a private key used by the {@link STALSignature} class. - * - * @author mcentner - */ -public class STALPrivateKey implements PrivateKey { - - private static final long serialVersionUID = 1L; - - /** - * The STAL implementation. - */ - private STAL stal; - - /** - * The callback interface for obtaining the hash input data. - */ -// private HashDataInputCallback hashDataInputCallback; - - - private List dataObjects; - - /** - * The keybox identifier. - */ - private String keyboxIdentifier; - - /** - * The signature algorithm. - */ - private String algorithm; - - /** - * Creates a new instance of this STALPrivateKey with the given - * stal implementation, signature algorithm, - * keyboxIdentifier and hashDataInputCallback - * interface. - * - * @param stal - * the STAL implementation - * @param algorithm - * the signature algorithm - * @param keyboxIdentifier - * the keybox identifier - * @param hashDataInputCallback - * the interface for obtaining the has input data - */ - public STALPrivateKey(STAL stal, - String algorithm, String keyboxIdentifier, List dataObjects) { - super(); - this.keyboxIdentifier = keyboxIdentifier; - this.dataObjects = dataObjects; - this.stal = stal; - this.algorithm = algorithm; - } - - /* (non-Javadoc) - * @see java.security.Key#getAlgorithm() - */ - @Override - public String getAlgorithm() { - return algorithm; - } - - /* (non-Javadoc) - * @see java.security.Key#getEncoded() - */ - @Override - public byte[] getEncoded() { - throw new UnsupportedOperationException("STALPrivateKey does not support the getEncoded() method."); - } - - /* (non-Javadoc) - * @see java.security.Key#getFormat() - */ - @Override - public String getFormat() { - return null; - } - - /** - * @return the STAL implementation - */ - public STAL getStal() { - return stal; - } - - /** - * @return the interface for obtaining the hash data input - */ - public List getDataObjects() { - - return dataObjects; - } - - /** - * @return the keybox identifier - */ - public String getKeyboxIdentifier() { - return keyboxIdentifier; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java deleted file mode 100644 index 9fb9a3f1..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java +++ /dev/null @@ -1,71 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import iaik.xml.crypto.XmldsigMore; - -import java.security.AccessController; -import java.security.PrivilegedAction; -import java.security.Provider; -import java.security.Signature; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.crypto.dsig.SignatureMethod; - -/** - * A security provider implementation that provides {@link Signature} implementations - * based on STAL. - * - * @author mcentner - */ -public class STALProvider extends Provider { - - private static final long serialVersionUID = 1L; - - private static String IMPL_PACKAGE_NAME = "at.gv.egiz.bku.slcommands.impl.xsect"; - - public STALProvider() { - - super("STAL", 1.0, "Security Token Abstraction Layer Provider"); - - final Map map = new HashMap(); - - // TODO: register further algorithms - map.put("Signature." + SignatureMethod.RSA_SHA1, - IMPL_PACKAGE_NAME + ".STALSignature"); - map.put("Signature." + XmldsigMore.SIGNATURE_ECDSA_SHA1, - IMPL_PACKAGE_NAME + ".STALSignature"); - map.put("Signature." + XmldsigMore.SIGNATURE_RSA_SHA256, - IMPL_PACKAGE_NAME + ".STALSignature"); - map.put("Signature." + XmldsigMore.SIGNATURE_ECDSA_SHA256, - IMPL_PACKAGE_NAME + ".STALSignature"); - map.put("Signature." + XmldsigMore.SIGNATURE_ECDSA_SHA512, - IMPL_PACKAGE_NAME + ".STALSignature"); - - - AccessController.doPrivileged(new PrivilegedAction() { - @Override - public Void run() { - putAll(map); - return null; - } - }); - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java deleted file mode 100644 index dd7c7d8a..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java +++ /dev/null @@ -1,184 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import at.gv.egiz.bku.slcommands.impl.DataObjectHashDataInput; -import at.gv.egiz.bku.slexceptions.SLViewerException; - -import java.io.ByteArrayOutputStream; -import java.security.InvalidKeyException; -import java.security.InvalidParameterException; -import java.security.PrivateKey; -import java.security.PublicKey; -import java.security.SignatureException; -import java.security.SignatureSpi; -import java.util.Collections; -import java.util.List; - -import at.gv.egiz.stal.ErrorResponse; -import at.gv.egiz.stal.HashDataInput; -import at.gv.egiz.stal.STAL; -import at.gv.egiz.stal.STALRequest; -import at.gv.egiz.stal.STALResponse; -import at.gv.egiz.stal.SignRequest; -import at.gv.egiz.stal.SignResponse; -//import at.gv.egiz.stal.HashDataInputCallback; -import java.util.ArrayList; - -/** - * A signature service provider implementation that uses STAL to sign. - * - * @author mcentner - */ -public class STALSignature extends SignatureSpi { - -// private static final Log log = LogFactory.getLog(STALSignature.class); - - /** - * The private key. - */ - protected STALPrivateKey privateKey; - - /** - * The to-be signed data. - */ - protected ByteArrayOutputStream data = new ByteArrayOutputStream(); - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineGetParameter(java.lang.String) - */ - @Override - protected Object engineGetParameter(String param) - throws InvalidParameterException { - throw new InvalidParameterException(); - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineInitSign(java.security.PrivateKey) - */ - @Override - protected void engineInitSign(PrivateKey privateKey) - throws InvalidKeyException { - - if (!(privateKey instanceof STALPrivateKey)) { - throw new InvalidKeyException("STALSignature supports STALKeys only."); - } - - this.privateKey = (STALPrivateKey) privateKey; - - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineInitVerify(java.security.PublicKey) - */ - @Override - protected void engineInitVerify(PublicKey publicKey) - throws InvalidKeyException { - - throw new UnsupportedOperationException("STALSignature does not support signature verification."); - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineSetParameter(java.lang.String, java.lang.Object) - */ - @Override - protected void engineSetParameter(String param, Object value) - throws InvalidParameterException { - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineSign() - */ - @Override - protected byte[] engineSign() throws SignatureException { - - STAL stal = privateKey.getStal(); - - if (stal == null) { - throw new SignatureException("STALSignature requires the STALPrivateKey " + - "to provide a STAL implementation reference."); - } - - String keyboxIdentifier = privateKey.getKeyboxIdentifier(); - - if (keyboxIdentifier == null) { - throw new SignatureException("STALSignature requires the STALPrivateKey " + - "to provide a KeyboxIdentifier."); - } - - // get hashDataInputs (DigestInputStreams) once slcommands.impl.xsect.Signature::sign() was called - List dataObjects = privateKey.getDataObjects(); -// log.debug("got " + dataObjects.size() + " DataObjects, passing HashDataInputs to STAL SignRequest"); - - List hashDataInputs = new ArrayList(); - for (DataObject dataObject : dataObjects) { - try { - dataObject.validateHashDataInput(); - } catch (SLViewerException e) { - throw new STALSignatureException(e); - } - hashDataInputs.add(new DataObjectHashDataInput(dataObject)); - } - - SignRequest signRequest = new SignRequest(); - signRequest.setKeyIdentifier(keyboxIdentifier); - signRequest.setSignedInfo(data.toByteArray()); - signRequest.setHashDataInput(hashDataInputs); - - List responses = stal.handleRequest(Collections.singletonList((STALRequest) signRequest)); - - if (responses == null || responses.size() != 1) { - throw new SignatureException("Failed to access STAL."); - } - - STALResponse response = responses.get(0); - if (response instanceof SignResponse) { - return ((SignResponse) response).getSignatureValue(); - } else if (response instanceof ErrorResponse) { - throw new STALSignatureException(((ErrorResponse) response).getErrorCode()); - } else { - throw new SignatureException("Failed to access STAL."); - } - - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineUpdate(byte) - */ - @Override - protected void engineUpdate(byte b) throws SignatureException { - data.write(b); - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineUpdate(byte[], int, int) - */ - @Override - protected void engineUpdate(byte[] b, int off, int len) - throws SignatureException { - data.write(b, off, len); - } - - /* (non-Javadoc) - * @see java.security.SignatureSpi#engineVerify(byte[]) - */ - @Override - protected boolean engineVerify(byte[] sigBytes) throws SignatureException { - throw new UnsupportedOperationException("STALSignature des not support signature verification."); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java deleted file mode 100644 index 4e86b07c..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java +++ /dev/null @@ -1,92 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.security.SignatureException; - -/** - * A SignatureException thrown by the {@link STALSignature}. - * - * @author mcentner - */ -public class STALSignatureException extends SignatureException { - - private static final long serialVersionUID = 1L; - - /** - * The STAL error code. - */ - private int errorCode; - - /** - * Creates a new instance of this STALSignatureException. - */ - public STALSignatureException() { - } - - /** - * Creates a new instance of this STALSigantureException with - * the given errorCode. - * - * @param errorCode the error code - */ - public STALSignatureException(int errorCode) { - this.errorCode = errorCode; - } - - /** - * Creates a new instance of this STALSignatureException with - * the given error msg. - * - * @param msg the error message - * @see SignatureException#SignatureException(String) - */ - public STALSignatureException(String msg) { - super(msg); - } - - /** - * Creates a new instance of this STALSignatureException with - * the given root cause. - * - * @param cause the cause - * @see SignatureException#SignatureException(Throwable) - */ - public STALSignatureException(Throwable cause) { - super(cause); - } - - /** - * Creates a new instance of this STALSignautureException with - * the given error message and root cause. - * - * @param message the error message - * @param cause the cause - * @see SignatureException#SignatureException(String, Throwable) - */ - public STALSignatureException(String message, Throwable cause) { - super(message, cause); - } - - /** - * @return the error code - */ - public int getErrorCode() { - return errorCode; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java deleted file mode 100644 index 3cebb6a3..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java +++ /dev/null @@ -1,995 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.security.InvalidAlgorithmParameterException; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; -import java.util.List; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.crypto.MarshalException; -import javax.xml.crypto.dom.DOMStructure; -import javax.xml.crypto.dsig.CanonicalizationMethod; -import javax.xml.crypto.dsig.DigestMethod; -import javax.xml.crypto.dsig.Reference; -import javax.xml.crypto.dsig.SignatureMethod; -import javax.xml.crypto.dsig.SignedInfo; -import javax.xml.crypto.dsig.XMLObject; -import javax.xml.crypto.dsig.XMLSignature; -import javax.xml.crypto.dsig.XMLSignatureException; -import javax.xml.crypto.dsig.XMLSignatureFactory; -import javax.xml.crypto.dsig.dom.DOMSignContext; -import javax.xml.crypto.dsig.keyinfo.KeyInfo; -import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory; -import javax.xml.crypto.dsig.keyinfo.X509Data; -import javax.xml.stream.XMLStreamException; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.etsi.uri._01903.v1_1.DataObjectFormatType; -import org.etsi.uri._01903.v1_1.QualifyingPropertiesType; -import org.w3c.dom.DOMConfiguration; -import org.w3c.dom.DOMException; -import org.w3c.dom.Document; -import org.w3c.dom.DocumentFragment; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.w3c.dom.ls.DOMImplementationLS; -import org.w3c.dom.ls.LSException; -import org.w3c.dom.ls.LSInput; -import org.w3c.dom.ls.LSOutput; -import org.w3c.dom.ls.LSParser; -import org.w3c.dom.ls.LSResourceResolver; -import org.w3c.dom.ls.LSSerializer; - -import at.buergerkarte.namespaces.securitylayer._1.Base64XMLLocRefReqRefContentType; -import at.buergerkarte.namespaces.securitylayer._1.Base64XMLOptRefContentType; -import at.buergerkarte.namespaces.securitylayer._1.DataObjectAssociationType; -import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType; -import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType; -import at.gv.egiz.bku.binding.HttpUtil; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLRequestException; -import at.gv.egiz.bku.slexceptions.SLViewerException; -import at.gv.egiz.bku.utils.HexDump; -import at.gv.egiz.bku.utils.urldereferencer.StreamData; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; -import at.gv.egiz.dom.DOMUtils; -import at.gv.egiz.slbinding.impl.XMLContentType; -import at.gv.egiz.stal.STAL; -import at.gv.egiz.xades.QualifyingPropertiesException; -import at.gv.egiz.xades.QualifyingPropertiesFactory; - -/** - * This class represents an XML-Signature as to be created by the - * security layer command CreateXMLSignatureRequest. - * - * @author mcentner - */ -public class Signature { - public static final String XMLDSIG_PREFIX = "dsig"; - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(Signature.class); - - /** - * The DOM implementation used. - */ - private DOMImplementationLS domImplLS; - - /** - * The SignatureContext for the XMLSignature. - */ - private SignatureContext ctx; - - /** - * The list of {@link DataObject}s for this signature. - */ - private List dataObjects = new ArrayList(); - - /** - * A mapping from the Id-attribute values of this signature's - * ds:References to the corresponding {@link DataObject}s. - */ -// private Map dataObjectReferencIds = new HashMap(); - - /** - * The SignatureEnvironment for this signature. - */ - private SignatureLocation signatureLocation; - - /** - * The XML signature. - */ - private XMLSignature xmlSignature; - - /** - * A list of attributes of type xsd:ID to be registered in the {@link DOMSignContext}. - */ - private List idAttributes = new ArrayList(); - - /** - * The signer's X509 certificate. - */ - private X509Certificate signerCertificate; - - /** - * The signing time. - */ - private Date signingTime; - - /** - * Creates a new SLXMLSignature instance. - */ - public Signature(URLDereferencerContext dereferencerContext, - IdValueFactory idValueFactory, - AlgorithmMethodFactory algorithmMethodFactory) { - - domImplLS = DOMUtils.getDOMImplementationLS(); - - ctx = new SignatureContext(); - - ctx.setSignatureFactory(XMLSignatureFactory.getInstance()); - - ctx.setDereferencerContext(dereferencerContext); - ctx.setIdValueFactory(idValueFactory); - ctx.setAlgorithmMethodFactory(algorithmMethodFactory); - - } - - /** - * @return the Document containing this Signature - */ - public Document getDocument() { - return ctx.getDocument(); - } - - /** - * @return the parent Node for this Signature - */ - public Node getParent() { - return (signatureLocation != null) ? signatureLocation.getParent() : null; - } - - /** - * @return the next sibling Node for this Signature - */ - public Node getNextSibling() { - return (signatureLocation != null) ? signatureLocation.getNextSibling() : null; - } - - /** - * @return the XMLSignature - */ - public XMLSignature getXMLSignature() { - return xmlSignature; - } - - /** - * @return the list of {@link Reference}s of this Signature - */ - @SuppressWarnings("unchecked") - public List getReferences() { - return (xmlSignature != null) ? xmlSignature.getSignedInfo().getReferences() : null; - } - - /** - * @return the list of {@link XMLObject}s of this Signature - */ - @SuppressWarnings("unchecked") - public List getXMLObjects() { - return (xmlSignature != null) ? xmlSignature.getObjects() : null; - } - - /** - * Prepares the signature document with the information given by the - * signatureInfo provided. - * - * @param signatureInfo - * the SignatureInfo - * - * @throws SLCommandException - * if processing fails for any reason - * @throws IllegalStateException - * if the parent node has already been set - * @throws NullPointerException - * if signatureInfo is null - */ - public void setSignatureInfo(SignatureInfoCreationType signatureInfo) throws SLCommandException { - - if (signatureLocation != null) { - throw new IllegalStateException("SignatureEnvironment already set."); - } - - Base64XMLOptRefContentType signatureEnvironment = signatureInfo.getSignatureEnvironment(); - - if (signatureEnvironment == null) { - - // no SignatureEnvironment, so we use an empty document and the document as parent - ensureSignatureLocation(); - - } else { - - // parse SignatureEnvrionment and use as document - Document document = parseSignatureEnvironment(signatureEnvironment, signatureInfo.getSupplement()); - ctx.setDocument(document); - - signatureLocation = new SignatureLocation(ctx); - signatureLocation.setSignatureInfo(signatureInfo); - - } - - } - - /** - * Ensures a SignatureLocation for this Signature. - */ - private void ensureSignatureLocation() { - - if (signatureLocation == null) { - Document document = DOMUtils.createDocument(); - ctx.setDocument(document); - - signatureLocation = new SignatureLocation(ctx); - signatureLocation.setParent(document); - } - - } - - /** - * Adds a DataObject with the information given by the - * dataObjectInfo provided to this Signature. - * - * @param dataObjectInfo - * the DataObjectInfo element - * - * @throws SLCommandException - * if adding the DataObject fails - * @throws SLRequestException - * if the information provided by the given - * dataObjectInfo does not conform to the security - * layer specification - * @throws NullPointerException - * if dataObjectInfo is null - */ - public void addDataObject(DataObjectInfoType dataObjectInfo) throws SLCommandException, SLRequestException { - - ensureSignatureLocation(); - - DataObject dataObject = new DataObject(ctx); - dataObject.setDataObjectInfo(dataObjectInfo); - - dataObjects.add(dataObject); - -// dataObjectReferencIds.put(dataObject.getReference().getId(), dataObject); - - } - - /** - * Sets the SigningTime qualifying property of this Signature. - * - * @param signingTime the signing time to set - */ - public void setSigningTime(Date signingTime) { - this.signingTime = signingTime; - } - - /** - * Sets the SignerCertificate qualifying property of this Signature. - * - * @param certificate the signer's certificate - */ - public void setSignerCeritifcate(X509Certificate certificate) { - this.signerCertificate = certificate; - } - - /** - * Builds the XMLSignature data structure of this Signature as configured by - * the various setter methods. - * - * @throws SLCommandException if building this signature fails - */ - public void buildXMLSignature() throws SLCommandException { - - String signatureId = ctx.getIdValueFactory().createIdValue("Signature"); - - List objects = new ArrayList(); - List references = new ArrayList(); - - // add all data objects - for (DataObject dataObject : dataObjects) { - if (dataObject.getXmlObject() != null) { - objects.add(dataObject.getXmlObject()); - } - if (dataObject.getReference() != null) { - references.add(dataObject.getReference()); - } - } - - addXAdESObjectAndReference(objects, references, signatureId); - - XMLSignatureFactory signatureFactory = ctx.getSignatureFactory(); - AlgorithmMethodFactory algorithmMethodFactory = ctx.getAlgorithmMethodFactory(); - - CanonicalizationMethod cm; - SignatureMethod sm; - try { - cm = algorithmMethodFactory.createCanonicalizationMethod(ctx); - sm = algorithmMethodFactory.createSignatureMethod(ctx); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get Canonicalization or Signature algorithm.", e); - throw new SLCommandException(4006); - } catch (InvalidAlgorithmParameterException e) { - log.error("Failed to get Canonicalization or Signature algorithm.", e); - throw new SLCommandException(4006); - } - - String siId = ctx.getIdValueFactory().createIdValue("SignedInfo"); - - SignedInfo si = signatureFactory.newSignedInfo(cm, sm, references, siId); - - KeyInfo ki = null; - if (signerCertificate != null) { - KeyInfoFactory kif = KeyInfoFactory.getInstance(); - X509Data x509Data = kif.newX509Data(Collections.singletonList(signerCertificate)); - ki = kif.newKeyInfo(Collections.singletonList(x509Data)); - } - - String signatureValueId = ctx.getIdValueFactory().createIdValue("SignatureValue"); - - xmlSignature = signatureFactory.newXMLSignature(si, ki, objects, signatureId, signatureValueId); - - } - - /** - * Sign this Signature using the given signContext. - *

- * Call's {@link #buildXMLSignature()} if it has not been called yet. - *

- * - * @param signContext - * the signing context - * - * @throws MarshalException - * if marshalling the XMLSignature fails - * @throws XMLSignatureException - * if signing the XMLSignature fails - * @throws SLCommandException - * if building the XMLSignature fails - * @throws SLViewerException - * @throws NullPointerException - * if signContext is null - */ - public void sign(DOMSignContext signContext) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException { - - if (xmlSignature == null) { - buildXMLSignature(); - } - - for (IdAttribute idAttribute : idAttributes) { - signContext.setIdAttributeNS(idAttribute.element, idAttribute.namespaceURI, idAttribute.localName); - } - - // DO NOT USE: - // signContext.setProperty("iaik.xml.crypto.dsig.sign-over", Boolean.TRUE); - - signContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE); - - signContext.putNamespacePrefix(XMLSignature.XMLNS,XMLDSIG_PREFIX); - - signContext.setURIDereferencer(new URIDereferncerAdapter(ctx.getDereferencerContext())); - - try { - xmlSignature.sign(signContext); - } catch (XMLSignatureException e) { - Throwable cause = e.getCause(); - while (cause != null) { - if (cause instanceof STALSignatureException) { - if (((STALSignatureException) cause).getCause() instanceof SLViewerException) { - throw (SLViewerException) ((STALSignatureException) cause).getCause(); - } - int errorCode = ((STALSignatureException) cause).getErrorCode(); - SLCommandException commandException = new SLCommandException(errorCode); - log.info("Failed to sign signature.", commandException); - throw commandException; - } else { - cause = cause.getCause(); - } - } - throw e; - } - - // debug - if (log.isTraceEnabled()) { - for (DataObject dataObject : dataObjects) { - Reference reference = dataObject.getReference(); - InputStream digestInputStream = reference.getDigestInputStream(); - if (digestInputStream != null) { - String mimeType = dataObject.getMimeType(); - StringBuilder sb = new StringBuilder(); - sb.append("DigestInput for Reference with id='"); - sb.append(reference.getId()); - sb.append("' (MIME-Type="); - sb.append(dataObject.getMimeType()); - sb.append("):\n"); - try { - if (mimeType != null && ( - mimeType.startsWith("text") || - "application/xhtml+xml".equals(mimeType))) { - byte[] b = new byte[512]; - for (int l; (l = digestInputStream.read(b)) != -1;) { - sb.append(new String(b, 0, l)); - } - } else { - sb.append(HexDump.hexDump(digestInputStream)); - } - } catch (IOException e) { - log.error(e); - } - log.trace(sb.toString()); - } else { - log.trace("Reference caching is not enabled."); - } - } - for (Reference reference : getReferences()) { - if (reference.getType() != null) { - InputStream digestInputStream = reference.getDigestInputStream(); - if (digestInputStream != null) { - StringBuilder sb = new StringBuilder(); - sb.append("DigestInput for Reference with id='"); - sb.append(reference.getId()); - sb.append("'; Type:"); - sb.append(reference.getType()); - sb.append("):\n"); - try { - byte[] b = new byte[512]; - for (int l; (l = digestInputStream.read(b)) != -1;) { - sb.append(new String(b, 0, l)); - } - } catch (IOException e) { - log.error(e); - } - log.trace(sb.toString()); - } else { - log.trace("Reference caching is not enabled."); - } - - } - } - } - - } - - /** - * Sign this Signature using the given stal implementation and - * keyboxIdentifier. - *

- * This method configures an appropriate {@link DOMSignContext} and calls - * {@link #sign(DOMSignContext)}. If {@link #buildXMLSignature()} has not been - * called yet, it is called by this method. - *

- * - * @param stal - * the STAL implementation to use - * @param keyboxIdentifier - * the KeyboxIdentifier to use - * - * @throws MarshalException - * if marshalling this Signature fails - * @throws XMLSignatureException - * if signing this Signature fails - * @throws SLCommandException - * if building this Signature fails - * @throws SLViewerException - * @throws NullPointerException - * if stal or keyboxIdentifier is - * null - */ - public void sign(STAL stal, String keyboxIdentifier) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException { - - if (stal == null) { - throw new NullPointerException("Argument 'stal' must not be null."); - } - - if (keyboxIdentifier == null) { - throw new NullPointerException("Argument 'keyboxIdentifier' must not be null."); - } - - if (xmlSignature == null) { - buildXMLSignature(); - } - - SignatureMethod signatureMethod = xmlSignature.getSignedInfo().getSignatureMethod(); - String algorithm = signatureMethod.getAlgorithm(); - - //don't get hashDataInputs (digestInputStreams) now, only once Signature.sign() was called (cf STALSignature.engineSign) - PrivateKey privateKey = new STALPrivateKey(stal, algorithm, keyboxIdentifier, dataObjects); // hashDataInputs); - - DOMSignContext signContext; - if (getNextSibling() == null) { - signContext = new DOMSignContext(privateKey, getParent()); - } else { - signContext = new DOMSignContext(privateKey, getParent(), getNextSibling()); - } - - sign(signContext); - } - -// @Override -// public HashDataInput getHashDataInput(final String referenceId) { -// final DataObject dataObject = dataObjectReferencIds.get(referenceId); -// if (dataObject != null) { -// return new HashDataInput() { -// -// InputStream hashDataInput = dataObject.getReference().getDigestInputStream(); -// -// @Override -// public String getReferenceId() { -// return referenceId; -// } -// -// @Override -// public String getMimeType() { -// return dataObject.getMimeType(); -// } -// -// @Override -// public InputStream getHashDataInput() { -// return hashDataInput; -// } -// }; -// } -// return null; -// } - - /** - * Adds the XAdES QualifyingProperties as an - * ds:Object and a corresponding ds:Reference to - * it's SignedProperties element to this Signature. - * - * @param objects - * the list of ds:Objects to add the created - * ds:Object to - * @param references - * the list of ds:References to add the created - * ds:Reference to - * @param signatureId TODO - * @throws SLCommandException - * if creating and adding the XAdES - * QualifyingProperties fails - * @throws NullPointerException - * if objects or references is - * null - */ - private void addXAdESObjectAndReference(List objects, List references, String signatureId) throws SLCommandException { - - QualifyingPropertiesFactory factory = QualifyingPropertiesFactory.getInstance(); - - String idValue = ctx.getIdValueFactory().createIdValue("SignedProperties"); - - Date date = (signingTime != null) ? signingTime : new Date(); - - List signingCertificates; - if (signerCertificate != null) { - signingCertificates = Collections.singletonList(signerCertificate); - } else { - signingCertificates = Collections.emptyList(); - } - - // TODO: report MOA-SP bug - // - // The security layer specification mandates the use of version 1.2.2. of the - // XAdES QualifyingProperties. However MOA-SP supports only version 1.1.1. Therefore, - // the version 1.1.1 is used in order to be compatible with current MOA-SP versions. - - List dataObjectFormats = new ArrayList(); - for (DataObject dataObject : dataObjects) { - if (dataObject.getMimeType() != null && dataObject.getReference() != null) { - Reference reference = dataObject.getReference(); - if (reference.getId() != null) { - String objectReference = "#" + reference.getId(); - dataObjectFormats.add(factory.createDataObjectFormatType( - objectReference, dataObject.getMimeType(), dataObject - .getDescription())); - } - } - } - - String target = "#" + signatureId; - - DigestMethod dm; - try { - dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get DigestMethod algorithm.", e); - throw new SLCommandException(4006); - } catch (InvalidAlgorithmParameterException e) { - log.error("Failed to get DigestMethod algorithm.", e); - throw new SLCommandException(4006); - } - - JAXBElement qualifyingProperties; - try { - qualifyingProperties = factory.createQualifyingProperties111(target, date, signingCertificates, idValue, dataObjectFormats, dm); - } catch (QualifyingPropertiesException e) { - log.error("Failed to create QualifyingProperties.", e); - throw new SLCommandException(4000); - } - - DocumentFragment fragment = ctx.getDocument().createDocumentFragment(); - - try { - factory.marshallQualifyingProperties(qualifyingProperties, fragment); - } catch (JAXBException e) { - log.error("Failed to marshal QualifyingProperties.", e); - throw new SLCommandException(4000); - } - - List content = Collections.singletonList(new DOMStructure(fragment.getFirstChild())); - - String objectIdValue = ctx.getIdValueFactory().createIdValue("Object"); - - XMLObject object = ctx.getSignatureFactory().newXMLObject(content, objectIdValue, null, null); - - objects.add(object); - - // TODO: Report MOA-SP Bug - // - // Direct referencing of the SignedPorperties Id-attribute is not supported by MOA-SP - // because the QualifyingProperties are parsed without the XAdES schema. Therefore, - // the shorthand XPointer could not be resolved. - // - // The following workaround uses an XPointer to select the SignedProperties in order - // to allow the signature to be verified with MOA-SP. - - String referenceURI = "#xmlns(xades=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('" - + objectIdValue - + "')/child::xades:QualifyingProperties/child::xades:SignedProperties)"; - - String referenceIdValue = ctx.getIdValueFactory().createIdValue("Reference"); - String referenceType = QualifyingPropertiesFactory.SIGNED_PROPERTIES_REFERENCE_TYPE_V1_1_1; - - try { - dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx); - } catch (NoSuchAlgorithmException e) { - log.error("Failed to get DigestMethod algorithm.", e); - throw new SLCommandException(4006); - } catch (InvalidAlgorithmParameterException e) { - log.error("Failed to get DigestMethod algorithm.", e); - throw new SLCommandException(4006); - } - - Reference reference = ctx.getSignatureFactory().newReference(referenceURI, dm, null, referenceType, referenceIdValue); - - references.add(reference); - - Node child = fragment.getFirstChild(); - if (child instanceof Element) { - NodeList nodes = ((Element) child).getElementsByTagNameNS(QualifyingPropertiesFactory.NS_URI_V1_1_1, "SignedProperties"); - if (nodes.getLength() > 0) { - IdAttribute idAttribute = new IdAttribute(); - idAttribute.element = (Element) nodes.item(0); - idAttribute.namespaceURI = null; - idAttribute.localName = "Id"; - idAttributes.add(idAttribute); - } - } - - } - - /** - * Parse the SignatureEnvironment. - * - * @param signatureEnvironment - * the SignatureEnvironment element - * @param supplements - * an optional list of Supplements (may be - * null) - * - * @return the parsed SignatureEnvironment document - * - * @throws SLCommandException - * if parsing the SignatureEnvironment fails - * @throws NullPointerException - * if signatureEnvironment is null - */ - private Document parseSignatureEnvironment( - Base64XMLOptRefContentType signatureEnvironment, - List supplements) throws SLCommandException { - - if (signatureEnvironment == null) { - throw new NullPointerException("Argument 'signatureEnvironment' must not be null."); - } - - LSInput input; - try { - if (signatureEnvironment.getReference() != null) { - log.debug("SignatureEnvironment contains Reference " + signatureEnvironment.getReference() + "."); - input = createLSInput(signatureEnvironment.getReference()); - } else if (signatureEnvironment.getBase64Content() != null) { - log.debug("SignatureEnvironment contains Base64Content."); - input = createLSInput(signatureEnvironment.getBase64Content()); - } else if (signatureEnvironment.getXMLContent() != null) { - log.debug("SignatureEnvironment contains XMLContent."); - input = createLSInput((XMLContentType) signatureEnvironment.getXMLContent()); - } else { - // the schema does not allow us to reach this point - throw new SLCommandException(4000); - } - } catch (IOException e) { - log.info("XML document in which the signature is to be integrated cannot be resolved.", e); - throw new SLCommandException(4100); - } catch (XMLStreamException e) { - log.info("XML document in which the signature is to be integrated cannot be resolved.", e); - throw new SLCommandException(4100); - } - - LSParser parser = domImplLS.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null); - DOMConfiguration domConfig = parser.getDomConfig(); - SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler(); - domConfig.setParameter("error-handler", errorHandler); - LSResourceResolverAdapter resourceResolver = new LSResourceResolverAdapter(supplements); - domConfig.setParameter("resource-resolver", resourceResolver); - domConfig.setParameter("validate", Boolean.TRUE); - - Document doc; - try { - doc = parser.parse(input); - } catch (DOMException e) { - log.info("XML document in which the signature is to be integrated cannot be parsed.", e); - throw new SLCommandException(4101); - } catch (LSException e) { - log.info("XML document in which the signature is to be integrated cannot be parsed.", e); - throw new SLCommandException(4101); - } - - if (resourceResolver.getError() != null) { - log.info("Failed to resolve resource while parsing SignatureEnvironment document.", resourceResolver.getError()); - // we don't stop here, as we only _try_ to parse validating - } - - if (errorHandler.hasFatalErrors()) { - // log fatal errors - if (log.isInfoEnabled()) { - List errorMessages = errorHandler.getErrorMessages(); - StringBuffer sb = new StringBuffer(); - for (String errorMessage : errorMessages) { - sb.append(" "); - sb.append(errorMessage); - } - log.info("XML document in which the signature is to be integrated cannot be parsed." + sb.toString()); - } - throw new SLCommandException(4101); - } - - // log parsed document - if (log.isTraceEnabled()) { - - StringWriter writer = new StringWriter(); - - writer.write("SignatureEnvironment:\n"); - - LSOutput output = domImplLS.createLSOutput(); - output.setCharacterStream(writer); - output.setEncoding("UTF-8"); - LSSerializer serializer = domImplLS.createLSSerializer(); - serializer.write(doc, output); - - log.trace(writer.toString()); - } - - return doc; - - } - - /** - * Creates an LSInput from the given reference URI. - * - * @param reference - * the reference URL - * - * @return an LSInput from the given reference URI - * - * @throws IOException - * if dereferencing the given reference fails - */ - private LSInput createLSInput(String reference) throws IOException { - - URLDereferencer urlDereferencer = URLDereferencer.getInstance(); - StreamData streamData = urlDereferencer.dereference(reference, ctx.getDereferencerContext()); - - String contentType = streamData.getContentType(); - String charset = HttpUtil.getCharset(contentType, true); - InputStreamReader streamReader; - try { - streamReader = new InputStreamReader(streamData.getStream(), charset); - } catch (UnsupportedEncodingException e) { - log.info("Charset " + charset + " not supported. Using default."); - streamReader = new InputStreamReader(streamData.getStream()); - } - - LSInput input = domImplLS.createLSInput(); - input = domImplLS.createLSInput(); - input.setCharacterStream(streamReader); - - return input; - - } - - /** - * Creates an LSInput from the given content bytes. - * - * @param content - * the content bytes - * - * @return an LSInput from the givne content bytes - */ - private LSInput createLSInput(byte[] content) { - - ByteArrayInputStream inputStream = new ByteArrayInputStream(content); - LSInput input = domImplLS.createLSInput(); - input.setByteStream(inputStream); - - return input; - - } - - /** - * Creates an LSInput from the given XML content. - * - * @param content - * the XML content - * @return an LSInput from the given XML content - * - * @throws XMLStreamException - * if reading the XMLStream from the given XML content fails - */ - private LSInput createLSInput(XMLContentType content) throws XMLStreamException { - - ByteArrayOutputStream redirectedStream = content.getRedirectedStream(); - if (redirectedStream != null) { - LSInput input = domImplLS.createLSInput(); - input.setByteStream(new ByteArrayInputStream(redirectedStream.toByteArray())); - return input; - } else { - return null; - } - - } - - /** - * Represents an xsd:Id-attribute value. - * - * @author mcentner - */ - private class IdAttribute { - - private Element element; - - private String namespaceURI; - - private String localName; - - } - - /** - * An implementation of the LSResourceResolver that uses a list of supplements - * to resolve resources. - * - * @author mcentner - */ - private class LSResourceResolverAdapter implements LSResourceResolver { - - List supplements; - - private LSResourceResolverAdapter( - List supplements) { - this.supplements = supplements; - } - - private Exception error; - - /** - * @return the error - */ - public Exception getError() { - return error; - } - - @Override - public LSInput resolveResource(String type, String namespaceURI, - String publicId, String systemId, String baseURI) { - - if (log.isTraceEnabled()) { - log.trace("Resolve resource :" + - "\n type=" + type + - "\n namespaceURI=" + namespaceURI + - "\n publicId=" + publicId + - "\n systemId=" + systemId + - "\n baseURI=" + baseURI); - } - - if (systemId != null) { - - log.debug("Resolve resource '" + systemId + "'."); - - for (DataObjectAssociationType supplement : supplements) { - - Base64XMLLocRefReqRefContentType content = supplement.getContent(); - if (content != null) { - - String reference = content.getReference(); - if (systemId.equals(reference)) { - - try { - if (content.getLocRefContent() != null) { - log.trace("Resolved resource '" + reference + "' to supplement with LocRefContent."); - return createLSInput(content.getLocRefContent()); - } else if (content.getBase64Content() != null) { - log.trace("Resolved resource '" + reference + "' to supplement with Base64Content."); - return createLSInput(content.getBase64Content()); - } else if (content.getXMLContent() != null) { - log.trace("Resolved resource '" + reference + "' to supplement with XMLContent."); - return createLSInput((XMLContentType) content.getXMLContent()); - } else { - return null; - } - } catch (IOException e) { - log.info("Failed to resolve resource '" + systemId + "' to supplement.", e); - error = e; - return null; - } catch (XMLStreamException e) { - log.info("Failed to resolve resource '" + systemId + "' to supplement.", e); - error = e; - return null; - } - - } - - } - - } - - log.info("Failed to resolve resource '" + systemId + "' to supplement. No such supplement."); - - } - - return null; - - } - - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java deleted file mode 100644 index 0925f2fd..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java +++ /dev/null @@ -1,129 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import javax.xml.crypto.dsig.DigestMethod; -import javax.xml.crypto.dsig.XMLSignatureFactory; - -import org.w3c.dom.Document; - -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; - -/** - * An instance of this class carries context information for a XML-Signature - * created by the security layer command CreateXMLSignature. - * - * @author mcentner - */ -public class SignatureContext { - - /** - * The document going to contain the XML signature. - */ - private Document document; - - /** - * The IdValueFactory used to create xsd:ID-attribute values. - */ - private IdValueFactory idValueFactory; - - /** - * The XMLSignatureFactory to create XML signature objects. - */ - private XMLSignatureFactory signatureFactory; - - /** - * The URLDereferencerContext for dereferencing URLs. - */ - private URLDereferencerContext dereferencerContext; - - /** - * The DigestMethodFactory to create {@link DigestMethod} objects. - */ - private AlgorithmMethodFactory digestMethodFactory; - - /** - * @return the document - */ - public Document getDocument() { - return document; - } - - /** - * @param document the document to set - */ - public void setDocument(Document document) { - this.document = document; - } - - /** - * @return the idValueFactory - */ - public IdValueFactory getIdValueFactory() { - return idValueFactory; - } - - /** - * @param idValueFactory the idValueFactory to set - */ - public void setIdValueFactory(IdValueFactory idValueFactory) { - this.idValueFactory = idValueFactory; - } - - /** - * @return the signatureFactory - */ - public XMLSignatureFactory getSignatureFactory() { - return signatureFactory; - } - - /** - * @param signatureFactory the signatureFactory to set - */ - public void setSignatureFactory(XMLSignatureFactory signatureFactory) { - this.signatureFactory = signatureFactory; - } - - /** - * @return the dereferencerContext - */ - public URLDereferencerContext getDereferencerContext() { - return dereferencerContext; - } - - /** - * @param dereferencerContext the dereferencerContext to set - */ - public void setDereferencerContext(URLDereferencerContext dereferencerContext) { - this.dereferencerContext = dereferencerContext; - } - - /** - * @return the digestMethodFactory - */ - public AlgorithmMethodFactory getAlgorithmMethodFactory() { - return digestMethodFactory; - } - - /** - * @param digestMethodFactory the digestMethodFactory to set - */ - public void setAlgorithmMethodFactory(AlgorithmMethodFactory digestMethodFactory) { - this.digestMethodFactory = digestMethodFactory; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java deleted file mode 100644 index 5ec02893..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java +++ /dev/null @@ -1,235 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.util.Iterator; - -import javax.xml.XMLConstants; -import javax.xml.namespace.NamespaceContext; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathConstants; -import javax.xml.xpath.XPathExpression; -import javax.xml.xpath.XPathExpressionException; -import javax.xml.xpath.XPathFactory; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType; -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.slbinding.impl.SignatureLocationType; - -/** - * This class implements the SignatureLocation of an XML-Signature - * to be created by the security layer command CreateXMLSignature. - * - * @author mcentner - */ -public class SignatureLocation { - - /** - * Logging facility. - */ - private static Log log = LogFactory.getLog(SignatureLocation.class); - - /** - * The SignatureContext for the XML signature - */ - private SignatureContext ctx; - - /** - * The parent node for the XML signature. - */ - private Node parent; - - /** - * The next sibling node for the XML signature. - */ - private Node nextSibling; - - /** - * Creates a new SignatureLocation with the given signatureContext - * - * @param signatureContext the context for the XML signature creation - */ - public SignatureLocation(SignatureContext signatureContext) { - this.ctx = signatureContext; - } - - /** - * @return the parent node for the XML signature - */ - public Node getParent() { - return parent; - } - - /** - * @param parent the parent for the XML signature - */ - public void setParent(Node parent) { - this.parent = parent; - } - - /** - * @return the next sibling node for the XML signature - */ - public Node getNextSibling() { - return nextSibling; - } - - /** - * @param nextSibling the next sibling node for the XML signature - */ - public void setNextSibling(Node nextSibling) { - this.nextSibling = nextSibling; - } - - /** - * Configures this SignatureLocation with the information provided by the - * given SignatureInfo element. - * - * @param signatureInfo - * the SignatureInfo element - * - * @throws SLCommandException - * if configuring this SignatureLocation with given - * signatureInfofails - */ - public void setSignatureInfo(SignatureInfoCreationType signatureInfo) - throws SLCommandException { - - // evaluate signature location XPath ... - SignatureLocationType signatureLocation = (SignatureLocationType) signatureInfo - .getSignatureLocation(); - - NamespaceContext namespaceContext = new MOAIDWorkaroundNamespaceContext( - signatureLocation.getNamespaceContext()); - - parent = evaluateSignatureLocation(signatureInfo.getSignatureLocation() - .getValue(), namespaceContext, ctx.getDocument().getDocumentElement()); - - // ... and index - nextSibling = findNextSibling(parent, signatureInfo.getSignatureLocation() - .getIndex().intValue()); - - } - - /** - * Evaluates the given xpath with the document element as context node - * and returns the resulting node. - * - * @param xpath the XPath expression - * @param nsContext the namespace context of the XPath expression - * @param contextNode the context node for the XPath evaluation - * - * @return the result of evaluating the XPath expression - * - * @throws SLCommandException - */ - private Node evaluateSignatureLocation(String xpath, NamespaceContext nsContext, Node contextNode) throws SLCommandException { - - Node node = null; - try { - XPathFactory xpathFactory = XPathFactory.newInstance(); - XPath xPath = xpathFactory.newXPath(); - xPath.setNamespaceContext(nsContext); - XPathExpression xpathExpr = xPath.compile(xpath); - node = (Node) xpathExpr.evaluate(contextNode, XPathConstants.NODE); - } catch (XPathExpressionException e) { - log.info("Failed to evaluate SignatureLocation XPath expression '" + xpath + "' on context node.", e); - throw new SLCommandException(4102); - } - - if (node == null) { - log.info("Failed to evaluate SignatureLocation XPath expression '" + xpath + "'. Result is empty."); - throw new SLCommandException(4102); - } - - return node; - - } - - /** - * Finds the next sibling node of the parent's n-th child node - * or null if there is no next sibling. - * - * @param parent the parent node - * @param n the index of the child node - * - * @return the next sibling node of the node specified by parent and index n, - * or null if there is no next sibling node. - * - * @throws SLCommandException if the n-th child of parent does not exist - */ - private Node findNextSibling(Node parent, int n) throws SLCommandException { - - NodeList childNodes = parent.getChildNodes(); - Node childNode = childNodes.item(n); - if (childNode == null) { - log.info("SingatureLocation Index '" + n + "' not found in document."); - throw new SLCommandException(4102); - } else { - return childNode.getNextSibling(); - } - - } - - /** - * Workaround for a missing namespace prefix declaration in MOA-ID. - * - * @author mcentner - */ - private class MOAIDWorkaroundNamespaceContext implements NamespaceContext { - - private NamespaceContext namespaceContext; - - public MOAIDWorkaroundNamespaceContext(NamespaceContext namespaceContext) { - super(); - this.namespaceContext = namespaceContext; - } - - @Override - public String getNamespaceURI(String prefix) { - - String namespaceURI = namespaceContext.getNamespaceURI(prefix); - - if ((namespaceURI == null || XMLConstants.NULL_NS_URI.equals(namespaceURI)) && "saml".equals(prefix)) { - namespaceURI = "urn:oasis:names:tc:SAML:1.0:assertion"; - log.debug("Namespace prefix '" + prefix + "' resolved to '" + namespaceURI + "' (MOA-ID Workaround)."); - } else { - log.trace("Namespace prefix '" + prefix + "' resolved to '" + namespaceURI + "'."); - } - - return namespaceURI; - } - - @Override - public String getPrefix(String namespaceURI) { - return namespaceContext.getPrefix(namespaceURI); - } - - @SuppressWarnings("unchecked") - @Override - public Iterator getPrefixes(String namespaceURI) { - return namespaceContext.getPrefixes(namespaceURI); - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java deleted file mode 100644 index 0d54adce..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java +++ /dev/null @@ -1,98 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import java.util.ArrayList; -import java.util.List; - -import org.w3c.dom.DOMError; -import org.w3c.dom.DOMErrorHandler; - -/** - * A simple DOMErrorHandler implementation. - * - * @author mcentner - */ -public class SimpleDOMErrorHandler implements DOMErrorHandler { - - /** - * Have there been errors reported? - */ - private boolean errors = false; - - /** - * Have there been fatal error reported? - */ - private boolean fatalErrors = false; - - /** - * The list of error messages of reported errors. - */ - private List errorMessages = new ArrayList(); - - /** - * @return true if errors have been reported, or false otherwise - */ - public boolean hasErrors() { - return errors; - } - - /** - * @return true if fatal errors have been reported, or false otherwise - */ - public boolean hasFatalErrors() { - return fatalErrors; - } - - /** - * @return a list of error messages that have been reported - */ - public List getErrorMessages() { - return errorMessages; - } - - /* (non-Javadoc) - * @see org.w3c.dom.DOMErrorHandler#handleError(org.w3c.dom.DOMError) - */ - @Override - public boolean handleError(DOMError error) { - - switch (error.getSeverity()) { - - case DOMError.SEVERITY_WARNING : -// log.debug("[warning] " + error.getMessage()); - return true; - - case DOMError.SEVERITY_ERROR : -// log.debug("[error] " + error.getMessage()); - errorMessages.add(error.getMessage()); - errors = true; - return false; - - case DOMError.SEVERITY_FATAL_ERROR : -// log.debug("[fatal error] " + error.getMessage()); - errorMessages.add(error.getMessage()); - fatalErrors = true; - return false; - - default: - return false; - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java deleted file mode 100644 index c94937be..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java +++ /dev/null @@ -1,103 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import iaik.xml.crypto.utils.URIDereferencerImpl; - -import java.io.IOException; -import java.net.URI; -import java.net.URISyntaxException; - -import javax.xml.crypto.Data; -import javax.xml.crypto.OctetStreamData; -import javax.xml.crypto.URIDereferencer; -import javax.xml.crypto.URIReference; -import javax.xml.crypto.URIReferenceException; -import javax.xml.crypto.XMLCryptoContext; - -import at.gv.egiz.bku.utils.urldereferencer.StreamData; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer; -import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext; - -/** - * An URIDereferencer implementation that uses an {@link URLDereferencer} to - * dereference. - * - * @author mcentner - */ -public class URIDereferncerAdapter implements URIDereferencer { - - /** - * The context for dereferencing. - */ - protected URLDereferencerContext urlDereferencerContext; - - /** - * Creates a new URIDereferencerAdapter instance with the given - * urlDereferencerContext. - * - * @param urlDereferencerContext the context to be used for dereferencing - */ - public URIDereferncerAdapter(URLDereferencerContext urlDereferencerContext) { - super(); - this.urlDereferencerContext = urlDereferencerContext; - } - - /* (non-Javadoc) - * @see javax.xml.crypto.URIDereferencer#dereference(javax.xml.crypto.URIReference, javax.xml.crypto.XMLCryptoContext) - */ - @Override - public Data dereference(URIReference uriReference, XMLCryptoContext context) - throws URIReferenceException { - - String uriString = uriReference.getURI(); - if (uriString == null) { - return null; - } - - URI uri; - try { - uri = new URI(uriString); - } catch (URISyntaxException e) { - throw new URIReferenceException(e.getMessage(), e); - } - - if (uri.isAbsolute()) { - - URLDereferencer dereferencer = URLDereferencer.getInstance(); - StreamData streamData; - try { - streamData = dereferencer.dereference(uriString, urlDereferencerContext); - } catch (IOException e) { - throw new URIReferenceException(e.getMessage(), e); - } - return new OctetStreamData(streamData.getStream(), uriString, streamData.getContentType()); - - } else { - - URIDereferencer uriDereferencer = context.getURIDereferencer(); - if (uriDereferencer == null || uriDereferencer == this) { - uriDereferencer = new URIDereferencerImpl(); - } - - return uriDereferencer.dereference(uriReference, context); - - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java deleted file mode 100644 index 6b388f2a..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java +++ /dev/null @@ -1,112 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import iaik.xml.crypto.dsig.DigestMethodImpl; -import iaik.xml.crypto.dsig.DigestValueImpl; -import iaik.xml.crypto.dsig.ReferenceImpl; -import iaik.xml.crypto.dsig.TransformImpl; -import iaik.xml.crypto.dsig.TransformsImpl; - -import javax.xml.crypto.Data; -import javax.xml.crypto.URIDereferencer; -import javax.xml.crypto.URIReferenceException; -import javax.xml.crypto.XMLCryptoContext; -import javax.xml.crypto.dsig.DigestMethod; -import javax.xml.crypto.dsig.TransformException; - -import at.gv.egiz.bku.slexceptions.SLCommandException; -import at.gv.egiz.bku.slexceptions.SLExceptionMessages; - -/** - * This class extends the XSECT ReferenceImpl to allow for the use - * of already marshalled ds:Transforms elements for initialization. - * - * @author mcentner - */ -public class XSECTReference extends ReferenceImpl { - - /** - * The URIDereferencer to be used for dereferencing. - */ - protected URIDereferencer dereferencer; - - /** - * Creates a new instance of this XSECTReference with the given - * uri, digest method, transforms, type - * and id value. - * - * @param uri - * the URI-attribute value (may be null) - * @param dm - * the digest method - * @param transforms - * a TransformsImpl element (may be null) - * @param type - * the Type-attribute value (may be null) - * @param id - * the Id-attribute value (may be null) - * - * @throws NullPointerException - * if digestMethod is null - * @throws IllegalArgumentException - * if uri is not RFC 2396 compliant - * @throws ClassCastException - * if any of the transforms is not of type - * {@link TransformImpl} - */ - public XSECTReference(String uri, DigestMethod dm, TransformsImpl transforms, String type, - String id) { - super(uri, transforms, type, id); - digestMethod_ = (DigestMethodImpl) dm; - digestValue_ = new DigestValueImpl(); - } - - /* (non-Javadoc) - * @see iaik.xml.crypto.dsig.ReferenceType#dereference(javax.xml.crypto.XMLCryptoContext) - */ - @Override - public Data dereference(XMLCryptoContext context) throws TransformException, - URIReferenceException { - if (dereferencer != null) { - return dereferencer.dereference(this, context); - } else { - try { - return super.dereference(context); - } catch (URIReferenceException e) { - SLCommandException commandException = new SLCommandException(4003, - SLExceptionMessages.EC4003_NOT_RESOLVED, new Object[] { getURI() }); - throw new URIReferenceException("Failed to dereference data to-be signed.", commandException); - } - } - } - - /** - * @return the dereferencer to be used for dereferencing this reference - */ - public URIDereferencer getDereferencer() { - return dereferencer; - } - - /** - * @param dereferencer the dereferencer to be used for dereferencing this reference - */ - public void setDereferencer(URIDereferencer dereferencer) { - this.dereferencer = dereferencer; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java deleted file mode 100644 index a98e4236..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java +++ /dev/null @@ -1,124 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slcommands.impl.xsect; - -import iaik.xml.crypto.dsig.TransformImpl; -import iaik.xml.crypto.dsig.TransformsImpl; - -import java.util.List; - -import javax.xml.crypto.MarshalException; -import javax.xml.crypto.dom.DOMCryptoContext; -import javax.xml.crypto.dsig.Transform; - -import org.w3c.dom.Node; - -/** - * This class extends the XSECT TransformsImpl to allow for the use of an - * unmarshalled ds:Transforms element for initalization. - * - * @author mcentner - */ -public class XSECTTransforms extends TransformsImpl { - - /** - * Creates a new XSECTTransforms with the given list of transforms. - * - * @param transforms a list of {@link TransformImpl}s - * @see TransformsImpl#TransformsImpl(List) - */ - @SuppressWarnings("unchecked") - public XSECTTransforms(List transforms) { - super(transforms); - } - - /** - * Creates a new XSECTTransforms and initializes it from the given - * ds:Transforms node. - * - * @param context the context used for unmarshalling - * @param node the ds:Transforms node - * - * @throws MarshalException if unmarshalling the ds:Transforms fails - */ - public XSECTTransforms(DOMCryptoContext context, Node node) - throws MarshalException { - super(context, node); - } - - /** - * Inserts the given transform at the top of the - * transform list. - * - * @param transform the ds:Transform to instert - */ - @SuppressWarnings("unchecked") - public void insertTransform(Transform transform) { - if (transform == null) { - throw new NullPointerException("Parameter 'transform' must not be null."); - } - if (!(transform instanceof TransformImpl)) { - throw new ClassCastException("Transform 'transform' must be of type '" + TransformImpl.class.getName() + "'."); - } - transforms_.add(0, transform); - } - - /** - * @return - */ - @SuppressWarnings("unchecked") - private List getTransformImpls() { - return transforms_; - } - - /* (non-Javadoc) - * @see iaik.xml.crypto.dsig.TransformsType#marshal(javax.xml.crypto.dom.DOMCryptoContext, org.w3c.dom.Node, org.w3c.dom.Node) - */ - @Override - public Node marshal(DOMCryptoContext context, Node parent, Node nextSibling) - throws MarshalException { - - if (getNode() != null) { - // If this TransformsImpl has been unmarshalled from exiting nodes, - // we don't want to re-marshal ... - state_ = STATE_MARSHALED; - - // ... but append the existing node to the parent ... - Node transformsNode = parent.insertBefore(getNode(), nextSibling); - - // ... and marshal any Transforms not yet marshalled (e.g. that - // have been added via insertTransform(). - Node transformNextSibling = transformsNode.getFirstChild(); - List transforms = getTransformImpls(); - for (int i = 0; i < transforms.size(); i++) { - TransformImpl transform = transforms.get(i); - Node transformNode = transform.getNode(); - if (transformNode == null) { - // marshall TransformImpl - transformNode = transform.marshal(context, transformsNode, transformNextSibling); - } - transformNextSibling = transformNode.getNextSibling(); - } - - return transformsNode; - } else { - return super.marshal(context, parent, nextSibling); - } - - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java deleted file mode 100644 index 3f1732ba..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java +++ /dev/null @@ -1,31 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -/** - * Error in the binding to the transport protocol (2xxx) - */ -public class SLBindingException extends SLException { - - public SLBindingException(int errorCode) { - super(errorCode); - } - - public SLBindingException(int errorCode, String msg, Object[] args) { - super(errorCode, msg, args); - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java deleted file mode 100644 index 8136a093..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java +++ /dev/null @@ -1,26 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -public class SLCanceledException extends - at.gv.egiz.bku.slexceptions.SLException { - - public SLCanceledException(int errorCode, String msg, Object[] args) { - super(errorCode, msg, args); - // TODO Auto-generated constructor stub - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java deleted file mode 100644 index 73ae3325..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -public class SLCommandException extends at.gv.egiz.bku.slexceptions.SLException { - - private static final long serialVersionUID = 1L; - - public SLCommandException(int errorCode) { - super(errorCode); - } - - public SLCommandException(int errorCode, String msg, Object[] args) { - super(errorCode, msg, args); - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java deleted file mode 100644 index 4b541deb..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java +++ /dev/null @@ -1,88 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -import java.text.MessageFormat; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -public class SLException extends Exception { - - private static String RESOURCE_BUNDLE_BASE_NAME = "at.gv.egiz.bku.slexceptions.SLExceptionMessages"; - - private static String MISSING_RESOURCE_PATTERN = "MISSING RESOURCE FOR ERROR MESSAGE: {0} ({1})"; - - private static String ILLEGAL_ARGUMENT_MESSAGE = "MESSAGE FORMAT FAILED"; - - private static final long serialVersionUID = 1L; - - private int errorCode; - - private String message; - - private Object[] arguments; - - public SLException(int errorCode) { - this.errorCode = errorCode; - this.message = SLExceptionMessages.STANDARD_PREFIX + Integer.toString(errorCode); - } - - public SLException(int errorCode, String message, Object[] arguments) { - this.errorCode = errorCode; - this.message = message; - this.arguments = arguments; - } - - public int getErrorCode() { - return errorCode; - } - - public String getDetailedMsg() { - return getLocalizedMessage(); - } - - @Override - public String getLocalizedMessage() { - return getLocalizedMessage(Locale.getDefault()); - } - - public String getLocalizedMessage(Locale locale) { - - String pattern; - Object[] arguments = this.arguments; - try { - ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE_BASE_NAME, locale); - pattern = bundle.getString(message); - } catch (MissingResourceException e) { - pattern = MISSING_RESOURCE_PATTERN; - arguments = new Object[]{message, e.getMessage()}; - } - - String localizedMessage; - try { - localizedMessage = MessageFormat.format(pattern, arguments); - } catch (IllegalArgumentException e) { - localizedMessage = ILLEGAL_ARGUMENT_MESSAGE + ": " + pattern; - } - - return localizedMessage; - - } - - -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java deleted file mode 100644 index 73ac8d1b..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java +++ /dev/null @@ -1,56 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -public final class SLExceptionMessages { - - private SLExceptionMessages() { - } - - public static final String STANDARD_PREFIX = "ec"; - - // - // 3xxx - // - // Error in the XML structure of the command request - - public static final String EC3000_UNCLASSIFIED = "ec3000.unclassified"; - - public static final String EC3002_INVALID = "ec3002.invalid"; - - // - // 4xxx - // - // Error during command execution - - public static final String EC4000_UNCLASSIFIED_INFOBOX_INVALID = "ec4000.infobox.invalid"; - - public static final String EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED = "ec4000.idlink.transfomation.failed"; - - public static final String EC4002_INFOBOX_UNKNOWN = "ec4002.infobox.unknown"; - - public static final String EC4003_NOT_RESOLVED = "ec4003.not.resolved"; - - public static final String EC4011_NOTIMPLEMENTED = "ec4011.notimplemented"; - - // - // Legacy error codes - // - - public static final String LEC2901_NOTIMPLEMENTED = "lec2901.notimplemented"; - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java deleted file mode 100644 index 548732e6..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -public class SLRequestException extends SLException { - - public SLRequestException(int errorCode) { - super(errorCode); - // TODO Auto-generated constructor stub - } - - public SLRequestException(int errorCode, String msg, Object[] args) { - super(errorCode, msg, args); - // TODO Auto-generated constructor stub - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java deleted file mode 100644 index d09ca418..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java +++ /dev/null @@ -1,37 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -public class SLRuntimeException extends RuntimeException { - - public SLRuntimeException(String message, Throwable cause) { - super(message, cause); - } - - public SLRuntimeException(String message) { - super(message); - } - - public SLRuntimeException(Throwable cause) { - super(cause); - } - - public SLRuntimeException() { - } - - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java deleted file mode 100644 index 45501746..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java +++ /dev/null @@ -1,28 +0,0 @@ -package at.gv.egiz.bku.slexceptions; - -public class SLVersionException extends SLException { - - private static final long serialVersionUID = 1L; - - protected String namespaceURI; - - public SLVersionException(String namespaceURI) { - super(2901, SLExceptionMessages.LEC2901_NOTIMPLEMENTED, new Object[] {namespaceURI}); - this.namespaceURI = namespaceURI; - } - - public SLVersionException(int errorCode, String namespaceURI) { - super(errorCode); - this.namespaceURI = namespaceURI; - } - - public SLVersionException(int errorCode, String namespaceURI, String message, Object[] arguments) { - super(errorCode, message, arguments); - this.namespaceURI = namespaceURI; - } - - public String getNamespaceURI() { - return namespaceURI; - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java deleted file mode 100644 index 853328d5..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java +++ /dev/null @@ -1,28 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.slexceptions; - -public class SLViewerException extends SLException { - - public SLViewerException(int errorCode) { - super(errorCode); - } - - public SLViewerException(int errorCode, String msg, Object[] args) { - super(errorCode, msg, args); - } -} \ No newline at end of file diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java deleted file mode 100644 index 8cab581d..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2008 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. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package at.gv.egiz.bku.viewer; - -import at.gv.egiz.bku.gui.viewer.FontProviderException; -import at.gv.egiz.bku.gui.viewer.FontProvider; -import java.awt.Font; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Loads font(s) as classpath resource. - * Loaded fonts are shared within all instances in this VM (classloader) - * @author Clemens Orthacker - */ -public class ResourceFontLoader implements FontProvider { - - public static final String FONT_RESOURCE = "DejaVuLGCSansMono.ttf"; - - protected final static Log log = LogFactory.getLog(ResourceFontLoader.class); - - /** TextValidator and (local) SecureViewerDialog (see LocalStalFactory) use ResourceFontLoader, load resource only once */ - protected static Font font; - - /** - * - * @return - * @throws FontProviderException encapsulating FontFormatException (if resource doesn't contain the plain format) - * or IOException (if resource cannot be retrieved) - */ - @Override - public Font getFont() throws FontProviderException { - if (font == null) { - try { - if (log.isDebugEnabled()) { - log.debug("loading " + getClass().getClassLoader().getResource(FONT_RESOURCE)); - } - font = Font.createFont(Font.PLAIN, getClass().getClassLoader().getResourceAsStream(FONT_RESOURCE)); - } catch (Exception ex) { - log.error("failed to load font", ex); - throw new FontProviderException("failed to load font", ex); - } - } - log.trace("font resource loaded"); - return font; - } -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java deleted file mode 100644 index fb332a09..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java +++ /dev/null @@ -1,38 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.viewer; - -public class ValidationException extends Exception { - - private static final long serialVersionUID = 1L; - - public ValidationException() { - } - - public ValidationException(String message) { - super(message); - } - - public ValidationException(Throwable cause) { - super(cause); - } - - public ValidationException(String message, Throwable cause) { - super(message, cause); - } - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java deleted file mode 100644 index 08b21080..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java +++ /dev/null @@ -1,25 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.viewer; - -import java.io.InputStream; - -public interface Validator { - - public void validate(InputStream is, String charset) throws ValidationException; - -} diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java deleted file mode 100644 index ad9bf6bb..00000000 --- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java +++ /dev/null @@ -1,178 +0,0 @@ -/* -* Copyright 2008 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. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ -package at.gv.egiz.bku.viewer; - -import java.io.IOException; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.net.URL; -import java.util.Collections; -import java.util.Enumeration; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -public class ValidatorFactory { - - /** - * Logging facility. - */ - protected static Log log = LogFactory.getLog(ValidatorFactory.class); - - private static final Class VALIDATOR_CLASS = Validator.class; - - private static final String SERVICE_ID = "META-INF/services/" + VALIDATOR_CLASS.getName(); - - /** - * Creates a new Validator for the given mimeType. - * - * @param mimeType - * - * @return - * - * @throws IllegalArgumentException - * if no Validator for the mimeType could be found - */ - public static Validator newValidator(String mimeType) throws IllegalArgumentException { - - ClassLoader classLoader = ValidatorFactory.class.getClassLoader(); - ValidatorFactory factory = new ValidatorFactory(classLoader); - - Validator validator = factory.createValidator(mimeType); - - if (validator == null) { - throw new IllegalArgumentException("Validator for '" + mimeType - + "' could not be found."); - } - - return validator; - - } - - private ClassLoader classLoader; - - /** - * Private constructor. - * - * @param classLoader must not be null - */ - private ValidatorFactory(ClassLoader classLoader) { - - if (classLoader == null) { - throw new NullPointerException("Argument 'classLoader' must no be null."); - } - - this.classLoader = classLoader; - - } - - private Validator createValidator(String mimeType) { - - Iterator serviceIterator = createServiceIterator(); - while (serviceIterator.hasNext()) { - URL url = serviceIterator.next(); - - Properties properties = new Properties(); - try { - properties.load(url.openStream()); - } catch (IOException e) { - log.error("Failed to load service properties " + url.toExternalForm()); - continue; - } - String className = properties.getProperty(mimeType); - if (className != null) { - try { - return createValidatorInstance(className); - } catch (Exception e) { - continue; - } - } - - } - - return null; - - } - - /** - * - * @throws InvocationTargetException if className's (nullary) constructor throws exception - */ - private Validator createValidatorInstance(String className) - throws ClassNotFoundException, InstantiationException, - IllegalAccessException, NoSuchMethodException, InvocationTargetException { - - try { - Constructor implConstructor = classLoader.loadClass(className).getConstructor((Class[])null); - return (Validator) implConstructor.newInstance((Object[])null); - } catch (InvocationTargetException ex) { - //ex from constructor - log.error("Failed to initialize validator class '" + className + "': " + ex.getCause().getMessage(), ex.getCause()); - throw ex; - } catch (NoSuchMethodException ex) { - log.error("Validator class '" + className + "' has no nullary constructor", ex); - throw ex; - } catch (ClassNotFoundException e) { - log.error("Validator class '" + className + "' not found.", e); - throw e; - } catch (InstantiationException e) { - log.error("Faild to initialize validator class '" + className + "'.", e); - throw e; - } catch (IllegalAccessException e) { - log.error("Faild to initialize validator class '" + className + "'.", e); - throw e; - } catch (ClassCastException e) { - log.error("Class '" + className + "' is not a validator implementation.", e); - throw e; - } - - } - - private Iterator createServiceIterator() { - - try { - final Enumeration resources = classLoader.getResources(SERVICE_ID); - return new Iterator () { - - @Override - public boolean hasNext() { - return resources.hasMoreElements(); - } - - @Override - public URL next() { - return resources.nextElement(); - } - - @Override - public void remove() { - throw new UnsupportedOperationException(); - } - - }; - } catch (IOException e) { - log.error("Failed to enumerate resources " + SERVICE_ID); - List list = Collections.emptyList(); - return list.iterator(); - } - - } - -} -- cgit v1.2.3