diff options
9 files changed, 70 insertions, 114 deletions
| diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java index cbe5af7a..8f04d733 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java @@ -1,4 +1,19 @@ - +/* + * 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.local.stal;  import at.gv.egiz.bku.slcommands.impl.DataObjectHashDataInput; @@ -19,6 +34,10 @@ import java.util.List;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory; +/** + * + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at> + */  public class LocalSecureViewer implements SecureViewer {    private static final Log log = LogFactory.getLog(LocalSignRequestHandler.class); diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java index 492b8a05..9ae1d9b9 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java @@ -16,39 +16,27 @@   */  package at.gv.egiz.bku.local.stal; -import at.gv.egiz.bku.smccstal.SecureViewer; -import java.util.Collections; -import java.util.List; -  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;  import at.gv.egiz.bku.smccstal.SignRequestHandler; -import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.ErrorResponse;  import at.gv.egiz.stal.STALRequest;  import at.gv.egiz.stal.STALResponse;  import at.gv.egiz.stal.SignRequest; -import at.gv.egiz.stal.impl.ByteArrayHashDataInput; -import at.gv.egiz.stal.signedinfo.ReferenceType; -import java.io.ByteArrayOutputStream; -import java.io.InputStream;  /**   *  - * @author clemens + * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>   */  public class LocalSignRequestHandler extends SignRequestHandler { -//        implements SecureViewer {    private static final Log log = LogFactory.getLog(LocalSignRequestHandler.class); -  protected LocalSecureViewer secureViewer; -    public LocalSignRequestHandler(LocalSecureViewer secureViewer) {      super(secureViewer);    } -    /**     * If the request is a SIGN request, it contains a list of DataObjectHashDataInput      * providing the pre-digested input stream (that can be obtained repeatedly) if  @@ -63,8 +51,13 @@ public class LocalSignRequestHandler extends SignRequestHandler {      if (request instanceof SignRequest) {        SignRequest signReq = (SignRequest) request; -      secureViewer.setDataToBeSigned(signReq.getHashDataInput()); +      ((LocalSecureViewer) secureViewer).setDataToBeSigned(signReq.getHashDataInput()); +      return super.handleRequest(request); +    } else { +      log.fatal("Got unexpected STAL request: " + request); +      return new ErrorResponse(1000);      } -    return super.handleRequest(request); + +        }  } diff --git a/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java index b39b4d02..be37488b 100644 --- a/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java +++ b/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java @@ -23,14 +23,12 @@ import java.util.Locale;  import java.util.Map;  import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;  import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory; -import at.gv.egiz.bku.binding.BindingProcessorManager;  import at.gv.egiz.bku.binding.HTTPBindingProcessor;  import at.gv.egiz.bku.binding.HttpUtil;  import at.gv.egiz.bku.conf.Configurator; @@ -44,25 +42,32 @@ public class BKURequestHandler extends SpringBKUServlet {  	protected void doPost(HttpServletRequest req, HttpServletResponse resp)  			throws ServletException, java.io.IOException { -		log.debug("Got new request"); -		String lang = req.getHeader("Accept-Language"); -		Locale locale = AcceptLanguage.getLocale(lang); -		log.debug("Using locale: " + locale); -		HTTPBindingProcessor bindingProcessor; -		bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager() -				.createBindingProcessor(req.getRequestURL().toString(), null, locale); -		Map<String, String> headerMap = new HashMap<String, String>(); -		for (Enumeration<String> headerName = req.getHeaderNames(); headerName -				.hasMoreElements();) { -			String header = headerName.nextElement(); -			if (header != null) { -				headerMap.put(header, req.getHeader(header)); -			} -		} -		headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, req.getContentType() + ";" -				+ req.getCharacterEncoding()); -		bindingProcessor.setHTTPHeaders(headerMap); -		bindingProcessor.consumeRequestStream(req.getInputStream()); + +        log.debug("Received SecurityLayer request"); + +        String acceptLanguage = req.getHeader("Accept-Language"); +        Locale locale = AcceptLanguage.getLocale(acceptLanguage); +        log.debug("Accept-Language locale: " + locale); + +        HTTPBindingProcessor bindingProcessor; +        bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager() +            .createBindingProcessor(req.getRequestURL().toString(), null, locale); +        Map<String, String> headerMap = new HashMap<String, String>(); +        for (Enumeration<String> headerName = req.getHeaderNames(); headerName +            .hasMoreElements();) { +          String header = headerName.nextElement(); +          if (header != null) { +            headerMap.put(header, req.getHeader(header)); +          } +        } +        String charset = req.getCharacterEncoding(); +        String contentType = req.getContentType(); +        if (charset != null) { +          contentType += ";" + charset; +        } +        headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType); +        bindingProcessor.setHTTPHeaders(headerMap); +        bindingProcessor.consumeRequestStream(req.getInputStream());  		// fixxme just for testing  		bindingProcessor.run(); @@ -84,13 +89,13 @@ public class BKURequestHandler extends SpringBKUServlet {  		  log.debug("Do not set siglayout header");  		} -	  if (configurator.getProperty(Configurator.USERAGENT_CONFIG_P) != null) { -      resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, configurator -          .getProperty(Configurator.USERAGENT_CONFIG_P)); -    } else { -      resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, -              Configurator.USERAGENT_DEFAULT); -    } +        if (configurator.getProperty(Configurator.USERAGENT_CONFIG_P) != null) { +          resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, configurator +              .getProperty(Configurator.USERAGENT_CONFIG_P)); +        } else { +          resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, +                  Configurator.USERAGENT_DEFAULT); +        }  		resp.setContentType(bindingProcessor.getResultContentType());  		resp.setCharacterEncoding(ENCODING); diff --git a/BKULocalApp/pom.xml b/BKULocalApp/pom.xml index 8450c440..dc1583c5 100644 --- a/BKULocalApp/pom.xml +++ b/BKULocalApp/pom.xml @@ -96,5 +96,4 @@  			<version>6.1.15</version>  		</dependency>  	</dependencies> -  </project>
\ No newline at end of file diff --git a/BKULocalApp/src/main/java/at/gv/egiz/bku/local/app/Container.java b/BKULocalApp/src/main/java/at/gv/egiz/bku/local/app/Container.java index 833dbf4d..8e3c3a6a 100644 --- a/BKULocalApp/src/main/java/at/gv/egiz/bku/local/app/Container.java +++ b/BKULocalApp/src/main/java/at/gv/egiz/bku/local/app/Container.java @@ -51,7 +51,7 @@ public class Container {      webappcontext.setContextPath("/");
      webappcontext.setExtractWAR(false);
      System.out.println(getClass().getClassLoader().getResource("log4j.properties"));
 -    webappcontext.setWar("BKULocal-1.0.2-SNAPSHOT.war");
 +    webappcontext.setWar("BKULocal-1.0.4-SNAPSHOT.war");
      handlers.setHandlers(new Handler[] { webappcontext, new DefaultHandler() });
 diff --git a/BKUViewer/.classpath b/BKUViewer/.classpath index 1041acfa..dbf1e20c 100644 --- a/BKUViewer/.classpath +++ b/BKUViewer/.classpath @@ -1,8 +1,8 @@  <?xml version="1.0" encoding="UTF-8"?>  <classpath>  	<classpathentry kind="src" output="target/classes" path="src/main/java"/> +	<classpathentry kind="src" output="target/classes" path="src/main/resources"/>  	<classpathentry kind="src" output="target/test-classes" path="src/test/java"/> -	<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>  	<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources"/>  	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>  	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> diff --git a/BKUViewer/.project b/BKUViewer/.project index 5b3b191f..ea84ea41 100644 --- a/BKUViewer/.project +++ b/BKUViewer/.project @@ -16,12 +16,12 @@  			</arguments>  		</buildCommand>  		<buildCommand> -			<name>org.maven.ide.eclipse.maven2Builder</name> +			<name>org.eclipse.wst.validation.validationbuilder</name>  			<arguments>  			</arguments>  		</buildCommand>  		<buildCommand> -			<name>org.eclipse.wst.validation.validationbuilder</name> +			<name>org.maven.ide.eclipse.maven2Builder</name>  			<arguments>  			</arguments>  		</buildCommand> diff --git a/smcc/src/main/java/at/gv/egiz/smcc/ccid/DefaultReader.java b/smcc/src/main/java/at/gv/egiz/smcc/ccid/DefaultReader.java index b203ae52..066880b0 100644 --- a/smcc/src/main/java/at/gv/egiz/smcc/ccid/DefaultReader.java +++ b/smcc/src/main/java/at/gv/egiz/smcc/ccid/DefaultReader.java @@ -349,7 +349,7 @@ public class DefaultReader implements CCID {        if (resp == (byte) 0x00) {          synchronized(this) {            try { -            wait(200); +            wait(10);            } catch (InterruptedException ex) {              log.error("interrupted in MODIFY_PIN");            } diff --git a/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java b/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java index 56fc8804..560f1373 100644 --- a/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java +++ b/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java @@ -50,9 +50,7 @@ public class SignRequestHandler extends AbstractRequestHandler {      private static Log log = LogFactory.getLog(SignRequestHandler.class);      private static JAXBContext jaxbContext; -//    private PINProviderFactory pinProviderFactory; -    private SecureViewer secureViewer; -     +      static {          try {              jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage().getName()); @@ -61,6 +59,8 @@ public class SignRequestHandler extends AbstractRequestHandler {          }      } +    protected SecureViewer secureViewer; +          public SignRequestHandler(SecureViewer secureViewer) {        this.secureViewer = secureViewer;      } @@ -142,64 +142,4 @@ public class SignRequestHandler extends AbstractRequestHandler {          return true;      } -//  class SoftwarePinProvider implements PINProvider { -// -//    protected SignedInfoType signedInfo; -//    protected List<HashDataInput> hashDataInputs; -//    private boolean retry = false; -// -//    public SoftwarePinProvider(SignedInfoType signedInfo) { -//      this.signedInfo = signedInfo; -//    } -// -//    private void showSignaturePINDialog(PINSpec spec, int retries) { -//      if (retry) { -//          gui.showSignaturePINRetryDialog(spec, retries, SignRequestHandler.this, "sign", SignRequestHandler.this, -//            "cancel", SignRequestHandler.this, "hashData"); -//        } else { -//          gui.showSignaturePINDialog(spec, SignRequestHandler.this, "sign", SignRequestHandler.this, "cancel", SignRequestHandler.this, -//            "hashData"); -//        } -//    } -// -//    @Override -//    public char[] providePIN(PINSpec spec, int retries) -//            throws CancelledException, InterruptedException { -//      showSignaturePINDialog(spec, retries); -// -//      do { -//        waitForAction(); -//        gui.showWaitDialog(null); -//        if (actionCommand.equals("hashData")) { -// -//          showSignaturePINDialog(spec, retries); -// -//            try { -//              displayHashDataInputs(signedInfo.getReference()); -// -//            } catch (DigestException ex) { -//              log.error("Bad digest value: " + ex.getMessage()); -//              gui.showErrorDialog(BKUGUIFacade.ERR_INVALID_HASH, -//                      new Object[] {ex.getMessage()}, -//                      SignRequestHandler.this, "error"); -//            } catch (Exception ex) { -//              log.error("Could not display hashdata inputs: " + -//                      ex.getMessage()); -//              gui.showErrorDialog(BKUGUIFacade.ERR_DISPLAY_HASHDATA, -//                      new Object[] {ex.getMessage()}, -//                      SignRequestHandler.this, "error"); -//            } -//        } else if (actionCommand.equals("sign")) { -//          retry = true; -//          return gui.getPin(); -//        } else if (actionCommand.equals("hashDataDone")) { -//          showSignaturePINDialog(spec, retries); -//        } else if (actionCommand.equals("cancel") || -//                   actionCommand.equals("error")) { -//          throw new CancelledException(spec.getLocalizedName() + -//                  " entry cancelled"); -//        } -//      } while (true); -//    } -//  }  } | 
