diff options
| author | kstranacher_eGovL <kstranacher_eGovL@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2012-07-13 10:15:53 +0000 | 
|---|---|---|
| committer | kstranacher_eGovL <kstranacher_eGovL@d688527b-c9ab-4aba-bd8d-4036d912da1d> | 2012-07-13 10:15:53 +0000 | 
| commit | 07b0306ca470cca10eecceab1a762f995b894fb0 (patch) | |
| tree | f93b4dcb1e6b14ca97698d862587a49a0f28da47 /common/src/main/java/at/gv | |
| parent | 1626ac9867cd5406b83e73651080e33c11fb98d1 (diff) | |
| download | moa-id-spss-07b0306ca470cca10eecceab1a762f995b894fb0.tar.gz moa-id-spss-07b0306ca470cca10eecceab1a762f995b894fb0.tar.bz2 moa-id-spss-07b0306ca470cca10eecceab1a762f995b894fb0.zip | |
Integration of STORK
git-svn-id: https://joinup.ec.europa.eu/svn/moa-idspss/trunk@1286 d688527b-c9ab-4aba-bd8d-4036d912da1d
Diffstat (limited to 'common/src/main/java/at/gv')
4 files changed, 220 insertions, 1 deletions
| diff --git a/common/src/main/java/at/gv/egovernment/moa/util/Constants.java b/common/src/main/java/at/gv/egovernment/moa/util/Constants.java index 998bbf26f..c4f7eb3f3 100644 --- a/common/src/main/java/at/gv/egovernment/moa/util/Constants.java +++ b/common/src/main/java/at/gv/egovernment/moa/util/Constants.java @@ -285,6 +285,61 @@ public interface Constants {    /** URI of the XAdES v1.4.1 namespace */    public static final String XADES_1_4_1_NS_URI = "http://uri.etsi.org/01903/v1.4.1#"; +   +  /** URI of the SAML 2.0 namespace. */ +  public static final String SAML2_NS_URI = +    "urn:oasis:names:tc:SAML:2.0:assertion"; + +  /** Prefix used for the SAML 2.0 XML namespace */ +  public static final String SAML2_PREFIX = "saml2"; + +  /** Local location of the SAML 2.0 XML schema definition. */ +  public static final String SAML2_SCHEMA_LOCATION = +    SCHEMA_ROOT + "saml-schema-assertion-2.0.xsd"; +   +  /** URI of the SAML 2.0 protocol namespace. */ +  public static final String SAML2P_NS_URI = +    "urn:oasis:names:tc:SAML:2.0:protocol"; + +  /** Prefix used for the SAML 2.0 protocol XML namespace */ +  public static final String SAML2P_PREFIX = "saml2p"; + +  /** Local location of the SAML 2.0 protocol XML schema definition. */ +  public static final String SAML2P_SCHEMA_LOCATION = +    SCHEMA_ROOT + "saml-schema-protocol-2.0.xsd"; +   +  /** URI of the STORK namespace. */ +  public static final String STORK_NS_URI = +    "urn:eu:stork:names:tc:STORK:1.0:assertion"; + +  /** Prefix used for the STORK XML namespace */ +  public static final String STORK_PREFIX = "stork"; + +  /** Local location of the STORK XML schema definition. */ +  public static final String STORK_SCHEMA_LOCATION = +    SCHEMA_ROOT + "stork-schema-assertion-1.0.xsd"; +   +  /** URI of the STORK protocol namespace. */ +  public static final String STORKP_NS_URI = +    "urn:eu:stork:names:tc:STORK:1.0:protocol"; + +  /** Prefix used for the STORK protocol XML namespace */ +  public static final String STORKP_PREFIX = "storkp"; + +  /** Local location of the STORK protocol XML schema definition. */ +  public static final String STORKP_SCHEMA_LOCATION = +    SCHEMA_ROOT + "stork-schema-protocol-1.0.xsd"; +   +  /** URI of the XML Encryption namespace. */ +  public static final String XENC_NS_URI = +    "http://www.w3.org/2001/04/xmlenc#"; + +  /** Prefix used for the XML Encryption XML namespace */ +  public static final String XENC_PREFIX = "xenc"; + +  /** Local location of the XML Encryption XML schema definition. */ +  public static final String XENC_SCHEMA_LOCATION = +    SCHEMA_ROOT + "xenc-schema.xsd";    /**     * Contains all namespaces and local schema locations for XML schema @@ -310,7 +365,12 @@ public interface Constants {        + (XADES_1_1_1_NS_URI + " " + XADES_1_1_1_SCHEMA_LOCATION + " ")        + (XADES_1_2_2_NS_URI + " " + XADES_1_2_2_SCHEMA_LOCATION + " ")        + (XADES_1_3_2_NS_URI + " " + XADES_1_3_2_SCHEMA_LOCATION + " ") -      + (XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION); +      + (XADES_1_4_1_NS_URI + " " + XADES_1_4_1_SCHEMA_LOCATION + " ") +      + (SAML2_NS_URI + " " + SAML2_SCHEMA_LOCATION + " ") +      + (SAML2P_NS_URI + " " + SAML2P_SCHEMA_LOCATION + " ") +      + (STORK_NS_URI + " " + STORK_SCHEMA_LOCATION + " ") +      + (STORKP_NS_URI + " " + STORKP_SCHEMA_LOCATION + " ") +      + (XENC_NS_URI + " " + XENC_SCHEMA_LOCATION);    /** URN prefix for bPK and wbPK. */    public static final String URN_PREFIX = "urn:publicid:gv.at"; diff --git a/common/src/main/java/at/gv/egovernment/moa/util/DateTimeUtils.java b/common/src/main/java/at/gv/egovernment/moa/util/DateTimeUtils.java index d70073db8..8d57f911a 100644 --- a/common/src/main/java/at/gv/egovernment/moa/util/DateTimeUtils.java +++ b/common/src/main/java/at/gv/egovernment/moa/util/DateTimeUtils.java @@ -25,6 +25,7 @@  package at.gv.egovernment.moa.util;  import java.io.StringWriter; +import java.text.DateFormat;  import java.text.ParseException;  import java.text.SimpleDateFormat;  import java.util.Calendar; @@ -32,6 +33,10 @@ import java.util.Date;  import java.util.GregorianCalendar;  import java.util.TimeZone; +import org.joda.time.DateTime; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; +  /**   * Utility for parsing and building XML type <code>dateTime</code>,   * according to ISO 8601. @@ -396,5 +401,100 @@ public class DateTimeUtils {        }      }    } +   +  /** +   * Calculates the age if date of birth is given (for a calendar time stamp) +   * @param dateOfBirth Date of Birth +   * @param now Calendar time stamp at which the age needs to be calculated for +   * @return Age of a person +   */ +  public static int calcAge(Calendar dateOfBirth, Calendar now) { +      int age = now.get(Calendar.YEAR) - dateOfBirth.get(Calendar.YEAR); +       +      int nowM = now.get(Calendar.MONTH); +      int dobM = dateOfBirth.get(Calendar.MONTH); +      int nowDOM = now.get(Calendar.DAY_OF_MONTH); +      int dobDOM = dateOfBirth.get(Calendar.DAY_OF_MONTH); +       +      if ((nowM < dobM) || ((nowM == dobM) && (nowDOM < dobDOM))) { +         age--; +      } +       +      if (age < 0) { +         throw new IllegalArgumentException("Calculated age results in negative value."); +      } +      return age; +   } + +  /** +   * Calculates the age if date of birth is given as Calendar object +   * @param dateOfBirth Date of Birth as Calendar object +   * @return Age of a person +   */ +   public static int calcAge(Calendar dateOfBirth) { +      return calcAge(dateOfBirth, Calendar.getInstance()); +   } + +   /** +    * Calculates the age if date of birth is given (for a date time stamp) +    * @param dateOfBirth Date of Birth +    * @param now Date time stamp at which the age needs to be calculated for +    * @return Age of a person +    */ +   public static int calcAge(Date dateOfBirth, Date now) { +      Calendar dob = Calendar.getInstance(); +      dob.setTime(dateOfBirth); +      Calendar nowCal = Calendar.getInstance(); +      nowCal.setTime(now); +      return calcAge(dob, nowCal); +   } + +   /** +    * Calculates the age if date of birth is given as Date object +    * @param dateOfBirth Date of Birth as Date object +    * @return Age of a person +    */ +   public static int calcAge(Date dateOfBirth) { +      return calcAge(dateOfBirth, new Date()); +   } +    +   public static String formatPEPSDateToMOADate(String pepsDate) {		 +	    +	   if (StringUtils.isEmpty(pepsDate)) { +		   return null; +	   } +	    +	   DateTimeFormatter fmt = null; +		 +		switch (pepsDate.length()) { +		case 4: +			fmt = DateTimeFormat.forPattern("yyyy"); +			break; +		case 6: +			fmt = DateTimeFormat.forPattern("yyyyMM"); +			break; +		case 8: +			fmt = DateTimeFormat.forPattern("yyyyMMdd"); +			break; +		default: +			break; +		}	 +		 +		DateTime dt = fmt.parseDateTime(pepsDate); +		DateTimeFormatter fmt2 = DateTimeFormat.forPattern("yyyy-MM-dd"); +		return fmt2.print(dt); +		 +	} +    +   /** +    * Returns a date as String using a provided format +    * @param format Format the date/time should be returned +    * @return Date/Time as String formatted according the provided format +    */ +   public static String getDateTimeWithFormat(String format) { +        DateFormat dateFormat = new SimpleDateFormat(format); +        Date date = new Date(); +        return dateFormat.format(date); +    }  } diff --git a/common/src/main/java/at/gv/egovernment/moa/util/KeyStoreUtils.java b/common/src/main/java/at/gv/egovernment/moa/util/KeyStoreUtils.java index 78fe8a345..9db3ca6e3 100644 --- a/common/src/main/java/at/gv/egovernment/moa/util/KeyStoreUtils.java +++ b/common/src/main/java/at/gv/egovernment/moa/util/KeyStoreUtils.java @@ -26,14 +26,19 @@ package at.gv.egovernment.moa.util;  import iaik.x509.X509Certificate; +import java.io.BufferedInputStream;  import java.io.File;  import java.io.FileInputStream; +import java.io.FileNotFoundException;  import java.io.IOException;  import java.io.InputStream;  import java.net.URL;  import java.security.GeneralSecurityException;  import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException;  import java.security.cert.Certificate; +import java.security.cert.CertificateException;  /**   * Utility for creating and loading key stores. @@ -42,6 +47,18 @@ import java.security.cert.Certificate;   * @version $Id$   */  public class KeyStoreUtils { +	 +	/** +	 * JAVA KeyStore +	 */ +	private static final String KEYSTORE_TYPE_JKS = "JKS"; +	 +	/** +	 * PKCS12 KeyStore +	 */ +	private static final String KEYSTORE_TYPE_PKCS12 = "PKCS12"; +	 +	    /**     * Loads a key store from file. @@ -154,5 +171,42 @@ public class KeyStoreUtils {      in.close();      return cert;    } +   +  +	/** +	 * Loads a keyStore without knowing the keyStore type +	 * @param keyStorePath URL to the keyStore +	 * @param password Password protecting the keyStore +	 * @return keyStore loaded +	 * @throws KeyStoreException thrown if keyStore cannot be loaded +	 * @throws FileNotFoundException  +	 * @throws IOException  +	 */ +  public static KeyStore loadKeyStore(String keyStorePath, String password) throws KeyStoreException, IOException{ +		 +		//InputStream is = new FileInputStream(keyStorePath); +	  	URL keystoreURL = new URL(keyStorePath); +	    InputStream in = keystoreURL.openStream(); +		InputStream isBuffered = new BufferedInputStream(in);		 +		 +		isBuffered.mark(1024*1024); +		KeyStore ks = null; +		try { +			try {				 +				ks = loadKeyStore(KEYSTORE_TYPE_PKCS12, isBuffered, password); +			} catch (IOException e2) { +				isBuffered.reset();				 +				ks = loadKeyStore(KEYSTORE_TYPE_JKS, isBuffered, password); +			} +		} catch(Exception e) {			 +			e.printStackTrace(); +			//throw new KeyStoreException(e); +		} +		return ks;	 +						 +	} +	 +	 +  } diff --git a/common/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java b/common/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java index 7a72c0bfb..faa009b0e 100644 --- a/common/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java +++ b/common/src/main/java/at/gv/egovernment/moa/util/XPathUtils.java @@ -82,6 +82,11 @@ public class XPathUtils {      ctx.addNamespace(Constants.MVV_PREFIX, Constants.MVV_NS_URI);      ctx.addNamespace(Constants.STB_PREFIX, Constants.STB_NS_URI);      ctx.addNamespace(Constants.WRR_PREFIX, Constants.WRR_NS_URI); +    ctx.addNamespace(Constants.STORK_PREFIX, Constants.STORK_NS_URI); +    ctx.addNamespace(Constants.STORKP_PREFIX, Constants.STORKP_NS_URI); +    ctx.addNamespace(Constants.SAML2_PREFIX, Constants.SAML2_NS_URI); +    ctx.addNamespace(Constants.SAML2P_PREFIX, Constants.SAML2P_NS_URI); +    ctx.addNamespace(Constants.XENC_PREFIX, Constants.XENC_NS_URI);      NS_CONTEXT = ctx;    } | 
