diff options
Diffstat (limited to 'bkucommon/src')
| -rw-r--r-- | bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java | 2 | ||||
| -rw-r--r-- | bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java | 46 | 
2 files changed, 37 insertions, 11 deletions
| diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java index 943e8707..0308930f 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessorImpl.java @@ -125,6 +125,8 @@ public class HTTPBindingProcessorImpl extends AbstractBindingProcessor implement  		public static final String XADES_1_4_BLACKLIST_URL = "http://www.buergerkarte.at/BKU_XAdES_14_blacklist.txt"; +		public static final int XADES_1_4_BLACKLIST_EXPIRY = 60*60*24; //1 day +  		public static final String ALLOW_OTHER_REDIRECTS = "AllowOtherRedirects";  		public int getMaxDataUrlHops() { diff --git a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java index 174a8884..1b9ab06c 100644 --- a/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java +++ b/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java @@ -26,6 +26,7 @@ package at.gv.egiz.bku.slcommands.impl;  import java.io.InputStream;  import java.net.URL; +import java.net.URLConnection;  import java.security.NoSuchAlgorithmException;  import java.security.cert.X509Certificate;  import java.util.ArrayList; @@ -107,6 +108,10 @@ public class CreateXMLSignatureCommandImpl extends        HTTPBindingProcessorImpl.ConfigurationFacade.USE_XADES_1_4;      public static final String USE_XADES_1_4_BLACKLIST =        HTTPBindingProcessorImpl.ConfigurationFacade.USE_XADES_1_4_BLACKLIST; +    public static final String XADES_1_4_BLACKLIST_URL = +      HTTPBindingProcessorImpl.ConfigurationFacade.XADES_1_4_BLACKLIST_URL; +    public static final int XADES_1_4_BLACKLIST_EXPIRY = +        HTTPBindingProcessorImpl.ConfigurationFacade.XADES_1_4_BLACKLIST_EXPIRY;      public void setConfiguration(Configuration configuration) {        this.configuration = configuration; @@ -125,12 +130,20 @@ public class CreateXMLSignatureCommandImpl extends      }    } +  private static long XADES_1_4_BLACKLIST_TS;    private static final List<String> XADES_1_4_BLACKLIST;    static {      XADES_1_4_BLACKLIST = new ArrayList<String>(); +    loadXAdES14Blacklist(); +  } + +  private static void loadXAdES14Blacklist() { +    XADES_1_4_BLACKLIST_TS = System.currentTimeMillis(); +    XADES_1_4_BLACKLIST.clear();      try { -      URL bl = new URL(HTTPBindingProcessorImpl.ConfigurationFacade.XADES_1_4_BLACKLIST_URL); -      InputStream in = bl.openStream(); +      URLConnection blc = new URL(ConfigurationFacade.XADES_1_4_BLACKLIST_URL).openConnection(); +      blc.setUseCaches(false); +      InputStream in = blc.getInputStream();        Scanner s = new Scanner(in);        while (s.hasNext()){          XADES_1_4_BLACKLIST.add(s.next()); @@ -141,6 +154,24 @@ public class CreateXMLSignatureCommandImpl extends      }    } +  private static boolean matchesXAdES14Blacklist(String url) { +    log.debug("Checking DataURL against XAdES14 blacklist: {}", url); +    if ((System.currentTimeMillis() - XADES_1_4_BLACKLIST_TS) > +      (ConfigurationFacade.XADES_1_4_BLACKLIST_EXPIRY * 1000)) { +      log.debug("Updating XAdES14 blacklist"); +      loadXAdES14Blacklist(); +    } +    if (url != null) { +      for (String bl_entry : XADES_1_4_BLACKLIST) { +        if (url.matches(bl_entry)) { +          log.debug("XAdES14 blacklist match"); +          return true; +        } +      } +    } +    return false; +  } +    public void setConfiguration(Configuration configuration) {      configurationFacade.setConfiguration(configuration);    } @@ -167,15 +198,8 @@ public class CreateXMLSignatureCommandImpl extends      boolean useXAdES14 = configurationFacade.getUseXAdES14();      if (useXAdES14 && configurationFacade.getUseXAdES14Blacklist()) {        String dataURL = commandContext.getDataURL(); -      log.debug("Checking DataURL against XAdES14 blacklist: {}", dataURL); -      if (dataURL != null) { -        for (String bl_entry : XADES_1_4_BLACKLIST) { -          if (dataURL.matches(bl_entry)) { -            log.debug("XAdES14 blacklist match"); -            useXAdES14 = false; -          } -        } -      } +      if (matchesXAdES14Blacklist(dataURL)) +        useXAdES14 = false;      }      signature = new Signature(commandContext.getURLDereferencer(), | 
