diff options
10 files changed, 124 insertions, 26 deletions
| diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java b/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java index a884140..96286ad 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/cfg/SettingsReader.java @@ -303,6 +303,7 @@ public class SettingsReader implements Settings, Serializable        // load properties from current package!
        // properties_.load(getClass().getResourceAsStream(settingsFile_));
        Enumeration prop_keys = properties_.propertyNames();
 +      
        while (prop_keys.hasMoreElements())
        {
          String key = (String) prop_keys.nextElement();
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java b/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java index 73ee69a..989bbd4 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/commandline/Main.java @@ -152,7 +152,7 @@ public abstract class Main      SettingsReader.initializeForCommandLine();
      PropertyConfigurator.configure(SettingsReader.CONFIG_PATH + "log4j.properties");
 -
 +    
      try
      {
        // printUsage(System.out);
 @@ -170,7 +170,7 @@ public abstract class Main        String input = null;
        String output = null;
 -
 +      
        // for (int i = 0; i < args.length; i++)
        // {
        // logger_.debug("arg[" + i + "] = " + args[i]);
 @@ -470,13 +470,15 @@ public abstract class Main          }
        }
 -
 +      
        PdfASID algorithm = translateSignatureModeToPdfASID(signature_mode);
        // TODO MOA detached signing is not allowed at the commandline
        logger_.debug("Suggested sign algorithm = " + algorithm);
        if (connector.equals("moa"))
        {
 +    	// TODO: possible new implementation of moa where is commandline call supported 
 +    	// it should be checked in config file is it allowed to use MOA detached from command line.
          String msg = "Hinweis: Der MOA Detached Connector ist für die Kommandozeile nicht geeignet. Die Signatur wird daher im alten Base64 enveloping Format ausgeführt.";
          System.out.println(msg);
          logger_.warn(msg);
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/pdf/BinarySignature.java b/src/main/java/at/knowcenter/wag/egov/egiz/pdf/BinarySignature.java index 52d1d9f..fb93fbd 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/pdf/BinarySignature.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/pdf/BinarySignature.java @@ -374,6 +374,7 @@ public abstract class BinarySignature    {
      // byte[] digest = buildDigest(data, ods);
      String raw_text = CodingHelper.encodeBase64(data);// digest); // data);
 +    
      return raw_text;
    }
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/ConnectorFactory.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/ConnectorFactory.java index d75b915..6ce7b03 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/ConnectorFactory.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/ConnectorFactory.java @@ -49,6 +49,8 @@ public abstract class ConnectorFactory     * </p>
     */
    protected static final String CONNECTOR_INFORMATION_FIELD_NAME = "CONNECTOR_INFORMATION";
 +  
 +  protected static final String MOA_SIG_ID_VISIBLE_KEY = "moa.sign.id.active";
    /**
     * The list of available Connector implementations.
 @@ -320,9 +322,27 @@ public abstract class ConnectorFactory     */
    public static boolean needsSIG_ID(String connector)
    {
 -    // all modernn detached signatures have the SIG_ID field.
 -    return true;
 -    //return !connector.equals("moa");
 +	boolean return_result = true;
 +	
 +	if(connector.contains("moa"))
 +	{
 +		String moa_sig_id_visible = null;
 +		
 +	    try
 +	    {
 +	      moa_sig_id_visible = SettingsReader.getInstance().getValueFromKey(MOA_SIG_ID_VISIBLE_KEY);
 +	      
 +	      if(!moa_sig_id_visible.equals("true"))// || moa_sig_id_visible == null)
 +	    	  return_result = false;
 +	    }
 +	    catch (SettingsException e)
 +	    {
 +	      String log_message = "Can not load signature settings. Cause:\n" + e.getMessage();
 +	      logger_.error(log_message);
 +	      throw new RuntimeException(e);
 +	    }
 +	}
 +	
 +    return return_result;
    }
 -
  }
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/ConnectorChooser.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/ConnectorChooser.java index 4dcd1b5..4c63ebf 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/ConnectorChooser.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/ConnectorChooser.java @@ -7,7 +7,10 @@ import org.apache.commons.logging.Log;  import org.apache.commons.logging.LogFactory;
  import at.knowcenter.wag.egov.egiz.PdfASID;
 +import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
  import at.knowcenter.wag.egov.egiz.exceptions.ConnectorException;
 +import at.knowcenter.wag.egov.egiz.exceptions.SettingNotFoundException;
 +import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
  import at.knowcenter.wag.egov.egiz.framework.SignatorFactory;
  import at.knowcenter.wag.egov.egiz.sig.connectors.bku.EnvelopedBase64BKUConnector;
  import at.knowcenter.wag.egov.egiz.sig.connectors.bku.LocRefDetachedBKUConnector;
 @@ -28,15 +31,19 @@ public final class ConnectorChooser    /**
     * The log.
     */
 -  private static Log log = LogFactory.getLog(ConnectorChooser.class);
 +  private static Log log = LogFactory.getLog(ConnectorChooser.class);  
 +  private static final String MOA_CMD_LINE_SUPPORTED_KEY = "moa.sign.cmd.detached";
 +  /*
 +   * Called when we try to connect BKU over Web interface
 +   */
    public static LocalConnector chooseLocalConnectorForSign(String connector,
        String profile, String loc_ref_url) throws ConnectorException
    {
      log.debug("Choosing LocalConnector for signation...");
      log.debug("connector type = " + connector);
 -
 +    
      if (!connector.equals("bku"))
      {
        log.error("Currently only the BKU connector is fully implemented.");
 @@ -63,23 +70,43 @@ public final class ConnectorChooser    }
    public static Connector chooseCommandlineConnectorForSign(String connector,
 -      String profile) throws ConnectorException
 +      String profile) throws ConnectorException, SettingNotFoundException
    {
      log.debug("Choosing Connector for commandline signation...");
      log.debug("connector type = " + connector);
      if (connector.equals(BKU))
 -    {
 -      log.debug("sig_app is BKU ==> MultipartDetachedBKUConnector"); //$NON-NLS-1$
 -
 +    {      
 +      log.debug("sig_app is BKU ==> MultipartDetachedBKUConnector"); //$NON-NLS-1
 +    	  
        return new MultipartDetachedBKUConnector(profile);
      }
 +    
      if (connector.equals(MOA))
 -    {
 -      // TODO MOA detached signing is not allowed at the commandline
 -      log.warn("Detached MOA is not supported on the commandline. -> choosing Base64 temporarily.");
 -      return new EnvelopingBase64MOAConnector(profile);
 +    {      
 +      try {
 +		String cmd_supported = SettingsReader.getInstance().getValueFromKey(MOA_CMD_LINE_SUPPORTED_KEY);
 +		
 +		if(cmd_supported.equals("true"))
 +		{
 +		  //TODO: replace hardcoded constants!!!
 +		  return new DetachedLocRefMOAConnector(profile, "formdata:fileupload");
 +		}
 +		else
 +		{
 +		  // TODO MOA detached signing is not allowed at the commandline
 +		  log.warn("Detached MOA is not supported on the commandline. -> choosing Base64 temporarily.");
 +		  
 +		  return new EnvelopingBase64MOAConnector(profile);
 +		}
 +		
 +	} catch (SettingsException e) {
 +		e.printStackTrace();
 +	}
 +      //if()
 +      //return new DetachedLocRefMOAConnector(profile, "formdata:fileupload");
 +      //return new EnvelopingBase64MOAConnector(profile);
      }
      throw new ConnectorException(300, "Unknown connector type '" + connector + "' specified.");
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java index 9713a4a..4895dd8 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/bku/DetachedBKUConnector.java @@ -450,7 +450,7 @@ public class DetachedBKUConnector implements Connector, LocalConnector      /**
       * The configuration key of the sign request template.
       */
 -    protected static final String SIGN_REQUEST_TEMPLATE_KEY = "bku.sign.request.detached"; //$NON-NLS-1$
 +    protected static final String SIGN_REQUEST_TEMPLATE_KEY = "bku.sign.request.template"; //$NON-NLS-1$
      /**
       * The configuration key of the sign URL.
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java index 98d381a..eca728f 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/connectors/moa/DetachedLocRefMOAConnector.java @@ -37,7 +37,7 @@ public class DetachedLocRefMOAConnector implements Connector    /**
     * The SIG_ID prefix.
     */
 -  public static final String SIG_ID_PREFIX = "etsi-bku-detached@"; //$NON-NLS-1$
 +  //public static final String SIG_ID_PREFIX = "etsi-bku-detached@"; //$NON-NLS-1$
    /**
     * The log.
 @@ -316,7 +316,7 @@ public class DetachedLocRefMOAConnector implements Connector      /**
       * The configuration key of the sign request template.
       */
 -    protected static final String SIGN_REQUEST_TEMPLATE_KEY = "moa.sign.request.detached"; //$NON-NLS-1$
 +    protected static final String SIGN_REQUEST_TEMPLATE_KEY = "moa.sign.request.template"; //$NON-NLS-1$
      /**
       * The configuration key of the sign URL.
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedIdFormatter.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedIdFormatter.java index 25e4504..f951b47 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedIdFormatter.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedIdFormatter.java @@ -6,16 +6,21 @@ package at.knowcenter.wag.egov.egiz.sig.sigid;  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
 +import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
 +import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
 +
  /**
   * @author wprinz
   *
   */
  public class DetachedIdFormatter implements IdFormatter
  {
 +  // last change: erno & arian; 16.07.2007 13:17
 +  public static final String DEFAULT_BKU_SIG_ID = "default.bku.signature.id";
    /**
     * The SIG_ID prefix.
     */
 -  public static final String SIG_ID_PREFIX = "etsi-bku-detached"; //$NON-NLS-1$
 +  public static String SIG_ID_PREFIX = null;
    /**
     * The log.
 @@ -27,6 +32,10 @@ public class DetachedIdFormatter implements IdFormatter     */
    public String formatIds(String[] ids)
    {
 +	// if SIG_ID_PREFIX null is, call read the config file and set the value from it
 +	if(SIG_ID_PREFIX == null)
 +		setPrefixId();
 +	
      // ids algorithm:
      String join = ""; //$NON-NLS-1$
      String base = null;
 @@ -54,5 +63,18 @@ public class DetachedIdFormatter implements IdFormatter      String final_ids = SIG_ID_PREFIX + "@" + idstr;
      return final_ids;
    }
 -
 +  
 +  /*
 +   * Read configuration from file and set it to global variable
 +   */
 +  public void setPrefixId()
 +  {
 +    try 
 +    {
 +	  SIG_ID_PREFIX = SettingsReader.getInstance().getValueFromKey(DEFAULT_BKU_SIG_ID);
 +	} catch (SettingsException e) 
 +	{
 +	  e.printStackTrace();
 +	}
 +  }
  }
 diff --git a/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedLocRefMOAIdFormatter.java b/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedLocRefMOAIdFormatter.java index f1060fb..5cfd4fb 100644 --- a/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedLocRefMOAIdFormatter.java +++ b/src/main/java/at/knowcenter/wag/egov/egiz/sig/sigid/DetachedLocRefMOAIdFormatter.java @@ -3,6 +3,9 @@   */
  package at.knowcenter.wag.egov.egiz.sig.sigid;
 +import at.knowcenter.wag.egov.egiz.cfg.SettingsReader;
 +import at.knowcenter.wag.egov.egiz.exceptions.SettingsException;
 +
  /**
   * @author wprinz
   *
 @@ -12,14 +15,24 @@ public class DetachedLocRefMOAIdFormatter implements IdFormatter    /**
     * The SIG_ID prefix.
     */
 -  public static final String SIG_ID_PREFIX = "etsi-moa-detached"; //$NON-NLS-1$
 +	public static final String MOA_SIG_ID_KEY = "default.moa.signature.id";
    /**
     * @see at.knowcenter.wag.egov.egiz.sig.sigid.IdFormatter#formatIds(java.lang.String[])
     */
    public String formatIds(String[] ids)
    {
 -    return SIG_ID_PREFIX;
 +	String sig_id_prefix = null;
 +	
 +	try
 +	{
 +	  sig_id_prefix = SettingsReader.getInstance().getValueFromKey(MOA_SIG_ID_KEY);
 +	} catch (SettingsException e)
 +	{
 +	  e.printStackTrace();
 +	}
 +	
 +    return sig_id_prefix;
    }
  }
 diff --git a/work/cfg/config.properties b/work/cfg/config.properties index 9df5dee..468c601 100644 --- a/work/cfg/config.properties +++ b/work/cfg/config.properties @@ -5,6 +5,18 @@  #############################################
 +# changed by erno 13.07.2007 14:38
 +# last update: by erno & arian 16.07.2007 08:53
 +
 +# Der aktuellste Algorithmus
 +default.bku.signature.id=etsi-bka-1.0
 +default.moa.signature.id=etsi-bka-1.0
 +# MOA Signatur-Kennzeichnung vorhanden
 +moa.sign.id.active=false
 +# MOA Detached-Signieren aus Konsole (Commandline) verfügbar
 +moa.sign.cmd.detached=false
 +
 +#############################################
  # Applikationseinstellungen
  normalizer.version=V01
 @@ -31,7 +43,7 @@ bku.available_for_commandline=true  bku.sign.url=http://127.0.0.1:3495/http-security-layer-request
  bku.sign.KeyboxIdentifier=SecureSignatureKeypair
  bku.sign.request.base64=./templates/BKUSignRequestBase64.xml
 -bku.sign.request.detached=./templates/BKUSignRequestDetached.xml
 +bku.sign.request.template=./templates/bku.etsi-bka-1.0.sign.xml
  bku.verify.url=http://127.0.0.1:3495/http-security-layer-request
  bku.verify.request.base64=./templates/BKUVerifyRequestBase64.xml
 @@ -60,7 +72,7 @@ moa.available_for_commandline=true  moa.sign.url=http://127.0.0.1:18080/moa-spss/services/SignatureCreation
  moa.sign.KeyIdentifier=TestKey2
  moa.sign.request.base64=./templates/MOASignRequestBase64.xml
 -moa.sign.request.detached=./templates/MOASignRequestDetached.xml
 +moa.sign.request.template=./templates/moa.etsi-bka-1.0.sign.xml
  moa.verify.url=http://127.0.0.1:18080/moa-spss/services/SignatureVerification
  moa.verify.TrustProfileID=Test-Signaturdienste
 | 
