diff options
Diffstat (limited to 'eaaf_modules')
2 files changed, 63 insertions, 33 deletions
| diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java index 392771ff..7e65cec7 100644 --- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java +++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/AbstractSignatureService.java @@ -5,17 +5,24 @@ import javax.xml.parsers.DocumentBuilderFactory;  import javax.xml.parsers.ParserConfigurationException;  import at.gv.egovernment.moa.spss.server.config.ConfigurationException;  import at.gv.egovernment.moa.spss.server.config.ConfigurationProvider; +import at.gv.egovernment.moa.spss.server.iaik.config.IaikConfigurator; +import at.gv.egovernment.moa.spss.server.logging.TransactionId;  import at.gv.egovernment.moa.spss.server.transaction.TransactionContext;  import at.gv.egovernment.moa.spss.server.transaction.TransactionContextManager;  import at.gv.egovernment.moaspss.logging.LoggingContext;  import at.gv.egovernment.moaspss.logging.LoggingContextManager; +import iaik.server.Configurator; +  import org.slf4j.Logger;  import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired;  import org.w3c.dom.Document;  public abstract class AbstractSignatureService {  	private static final Logger log = LoggerFactory.getLogger(AbstractSignatureService.class); +	@Autowired(required = true) MoaSigInitializer moaSigConfig; +	  	/**  	 * Get a new {@link Document} from {@link DocumentBuilder} in synchronized form, because  	 * {@link DocumentBuilderFactory} and {@link DocumentBuilder} are not thread-safe. @@ -52,6 +59,8 @@ public abstract class AbstractSignatureService {  	      logMgr.setLoggingContext(ctx);  	    } +	     +	    new IaikConfigurator().configure(ConfigurationProvider.getInstance());  	} diff --git a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java index 05e17aa0..1628b71a 100644 --- a/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java +++ b/eaaf_modules/eaaf_module_moa-sig/src/main/java/at/gv/egiz/eid/authhandler/modules/sigverify/moasig/impl/MoaSigInitializer.java @@ -6,6 +6,8 @@ import java.security.Provider;  import java.security.Security;  import java.util.Iterator;  import java.util.Map.Entry; + +import javax.annotation.Nonnull;  import javax.annotation.PostConstruct;  import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.api.data.ISchemaRessourceProvider;  import at.gv.egiz.eid.authhandler.modules.sigverify.moasig.exceptions.MOASigServiceConfigurationException; @@ -26,6 +28,20 @@ public class MoaSigInitializer {  	@Autowired(required=false) ISchemaRessourceProvider[] schemas; +	private Configurator moaSigConfigurator; + +	 +	/** +	 * Get MOA-Sig configuration object +	 *  +	 * @return moa-sig configuration +	 */ +	@Nonnull +	public Configurator getMoaSigConfigurator() { +		return moaSigConfigurator; +		 +	} +  	@PostConstruct  	private synchronized void initialize() throws MOASigServiceConfigurationException {  		log.info("Initializing MOA-Sig signature-verification service ... "); @@ -41,49 +57,54 @@ public class MoaSigInitializer {          	Configurator.getInstance().init();          	log.info("MOA-Sig library initialization complete "); -         } catch (final MOAException e) { -        	 log.error("MOA-SP initialization FAILED!", e.getWrapped()); -             throw new MOASigServiceConfigurationException("service.moasig.04", new Object[] { e -                      .toString() }, e); -		} +        	Security.insertProviderAt(IAIK.getInstance(), 0); -        Security.insertProviderAt(IAIK.getInstance(), 0); +            final ECCelerate eccProvider = ECCelerate.getInstance(); +            if (Security.getProvider(eccProvider.getName()) != null) +            	Security.removeProvider(eccProvider.getName()); +            Security.addProvider(new ECCelerate()); -        final ECCelerate eccProvider = ECCelerate.getInstance(); -        if (Security.getProvider(eccProvider.getName()) != null) -        	Security.removeProvider(eccProvider.getName()); -        Security.addProvider(new ECCelerate()); +            fixJava8_141ProblemWithSSLAlgorithms(); -        fixJava8_141ProblemWithSSLAlgorithms(); +            if (log.isDebugEnabled()) { +            	log.debug("Loaded Security Provider:"); +            	final Provider[] providerList = Security.getProviders(); +            	for (int i=0; i<providerList.length; i++) +            		log.debug(i + ": " + providerList[i].getName() + " Version " + providerList[i].getVersion()); -        if (log.isDebugEnabled()) { -        	log.debug("Loaded Security Provider:"); -        	final Provider[] providerList = Security.getProviders(); -        	for (int i=0; i<providerList.length; i++) -        		log.debug(i + ": " + providerList[i].getName() + " Version " + providerList[i].getVersion()); +            } -        } +            //Inject additional XML schemes +            if (schemas != null && schemas.length > 0) { +            	log.debug("Infjecting additional XML schemes ... "); +            	for (final ISchemaRessourceProvider el : schemas) { +            		final Iterator<Entry<String, InputStream>> xmlSchemeIt = el.getSchemas().entrySet().iterator(); +            		while (xmlSchemeIt.hasNext()) { +    					final Entry<String, InputStream> xmlDef = xmlSchemeIt.next(); +    					try { +    						DOMUtils.addSchemaToPool(xmlDef.getValue(), xmlDef.getKey()); +    						log.info("Inject XML scheme: {}", xmlDef.getKey()); -        //Inject additional XML schemes -        if (schemas != null && schemas.length > 0) { -        	log.debug("Infjecting additional XML schemes ... "); -        	for (final ISchemaRessourceProvider el : schemas) { -        		final Iterator<Entry<String, InputStream>> xmlSchemeIt = el.getSchemas().entrySet().iterator(); -        		while (xmlSchemeIt.hasNext()) { -					final Entry<String, InputStream> xmlDef = xmlSchemeIt.next(); -					try { -						DOMUtils.addSchemaToPool(xmlDef.getValue(), xmlDef.getKey()); -						log.info("Inject XML scheme: {}", xmlDef.getKey()); +    					} catch (final IOException e) { +    						log.warn("Can NOT inject XML scheme: " + xmlDef.getKey(), e); -					} catch (final IOException e) { -						log.warn("Can NOT inject XML scheme: " + xmlDef.getKey(), e); +    					} -					} +    				} +            	} +            } +        	 +        	moaSigConfigurator = Configurator.getInstance(); +             +             +         } catch (final MOAException e) { +        	 log.error("MOA-SP initialization FAILED!", e.getWrapped()); +             throw new MOASigServiceConfigurationException("service.moasig.04", new Object[] { e +                      .toString() }, e); +		} -				} -        	} -        } +          	}      private static void fixJava8_141ProblemWithSSLAlgorithms() { | 
