From a0d75604747c0dcb314ef5de37d2c47c51312006 Mon Sep 17 00:00:00 2001 From: Bojan Suzic Date: Tue, 4 Feb 2014 17:27:55 +0100 Subject: adding some iaik dependencies for spss package --- .../Commons/1.2.0/Commons-1.2.0.jar.lastUpdated | 18 - .../Commons/1.2.0/Commons-1.2.0.pom.lastUpdated | 18 - .../eu/stork/Commons/1.2.0/_maven.repositories | 5 - repository/iaik/asit/1.3.4/asit-1.3.4.jar | Bin 0 -> 550695 bytes repository/iaik/asit/1.3.4/asit-1.3.4.jar.md5 | 1 + repository/iaik/asit/1.3.4/asit-1.3.4.jar.sha1 | 1 + repository/iaik/asit/1.3.4/asit-1.3.4.pom | 390 +++++++++++++ repository/iaik/asit/1.3.4/asit-1.3.4.pom.md5 | 1 + repository/iaik/asit/1.3.4/asit-1.3.4.pom.sha1 | 1 + repository/iaik/asit/1.3.5/asit-1.3.5.jar | Bin 0 -> 551218 bytes repository/iaik/asit/1.3.5/asit-1.3.5.jar.sha1 | 1 + repository/iaik/asit/1.3.5/asit-1.3.5.pom | 9 + repository/iaik/asit/1.3.5/asit-1.3.5.pom.sha1 | 1 + repository/iaik/asit/1.3.6/asit-1.3.6-javadoc.jar | Bin 0 -> 1166091 bytes repository/iaik/asit/1.3.6/asit-1.3.6-sources.jar | Bin 0 -> 231674 bytes repository/iaik/asit/1.3.6/asit-1.3.6.jar | Bin 0 -> 551232 bytes repository/iaik/asit/1.3.6/asit-1.3.6.pom | 390 +++++++++++++ .../bescheide/2007-09-13/bescheide-2007-09-13.jar | Bin 0 -> 107994 bytes .../2007-09-13/bescheide-2007-09-13.jar.sha1 | 1 + .../bescheide/2007-09-13/bescheide-2007-09-13.pom | 6 + .../2007-09-13/bescheide-2007-09-13.pom.sha1 | 1 + .../iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar | Bin 0 -> 449160 bytes .../commons-iaik/0.5.5/commons-iaik-0.5.5.jar.md5 | 1 + .../commons-iaik/0.5.5/commons-iaik-0.5.5.jar.sha1 | 1 + .../iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom | 633 +++++++++++++++++++++ .../commons-iaik/0.5.5/commons-iaik-0.5.5.pom.md5 | 1 + .../commons-iaik/0.5.5/commons-iaik-0.5.5.pom.sha1 | 1 + .../iaik/commons-iaik/0.6.2/commons-iaik-0.6.2.jar | Bin 0 -> 470399 bytes .../commons-iaik/0.7.1/commons-iaik-0.7.1.jar.md5 | 1 + .../commons-iaik/0.7.1/commons-iaik-0.7.1.jar.sha1 | 1 + .../commons-iaik/0.7.1/commons-iaik-0.7.1.pom.md5 | 1 + .../commons-iaik/0.7.1/commons-iaik-0.7.1.pom.sha1 | 1 + .../commons-iaik/0.7.1/m2e-lastUpdated.properties | 3 + repository/iaik/ecc/3.18/ecc-3.18.jar | Bin 0 -> 111446 bytes repository/iaik/ecc/3.18/ecc-3.18.pom | 7 + .../1.3/iaikPkcs11Provider-1.3.jar | Bin 0 -> 294725 bytes repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.jar | Bin 0 -> 105735 bytes repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.pom | 9 + .../2.15/iaik_ecc_eval_signed-2.15.jar | Bin 0 -> 134778 bytes .../iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.jar | Bin 0 -> 107890 bytes .../iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.pom | 7 + repository/iaik/iaik_ecc_signed/2.19/iaik_ecc.jar | Bin 0 -> 111446 bytes .../iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar | Bin 0 -> 111446 bytes .../2.19/iaik_ecc_signed-2.19.jar.sha1 | 1 + .../iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom | 9 + .../2.19/iaik_ecc_signed-2.19.pom.sha1 | 1 + .../iaik_ixsil/1.2.0/iaik_ixsil-1.2.0-eval.jar | Bin 0 -> 167965 bytes .../iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0.pom | 9 + .../1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar | Bin 0 -> 568449 bytes .../1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar.sha1 | 1 + .../1.2.2/iaik_ixsil_eval-1.2.2.jar | Bin 0 -> 197953 bytes .../1.2.2/iaik_ixsil_eval-1.2.2.jar.sha1 | 1 + .../1.2.2/iaik_ixsil_eval-1.2.2.pom | 6 + .../1.2.2/iaik_ixsil_eval-1.2.2.pom.sha1 | 1 + .../1.0/iaik_javax_crypto-1.0.jar | Bin 0 -> 28512 bytes .../3.16/iaik_jce_eval_signed-3.16.jar | Bin 0 -> 854896 bytes .../3.181/iaik_jce_eval_signed-3.181.jar | Bin 0 -> 890328 bytes .../iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.jar | Bin 0 -> 1059043 bytes .../iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.pom | 9 + .../iaik_jce_full/5.101/iaik_jce_full-5.101.jar | Bin 0 -> 1115849 bytes .../3.16/iaik_jce_full_signed-3.16.jar | Bin 0 -> 875901 bytes .../3.16/iaik_jce_full_signed-3.16.pom | 7 + .../iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.jar | Bin 0 -> 99575 bytes .../iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.pom | 7 + repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.jar | Bin 0 -> 34853 bytes .../iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.jar | Bin 0 -> 375286 bytes .../iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.pom | 7 + .../iaik_pki_module/1.0/iaik_pki_module-1.0.jar | Bin 0 -> 462362 bytes repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.jar | Bin 0 -> 219889 bytes .../0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.jar | Bin 0 -> 542887 bytes .../0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.pom | 135 +++++ .../0.0.1-SNAPSHOT/maven-metadata-local.xml | 24 + repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.jar | Bin 0 -> 559971 bytes repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.pom | 250 ++++++++ repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar | Bin 0 -> 560040 bytes repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom | 251 ++++++++ repository/iaik/iaik_tsl/maven-metadata-local.xml | 14 + repository/iaik/iaik_util/0.23/iaik_util-0.23.jar | Bin 0 -> 39377 bytes .../iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar | Bin 0 -> 374890 bytes .../iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar.sha1 | 1 + .../iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom | 9 + .../iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom.sha1 | 1 + .../iaik_xsect/1.1709142/iaik_xsect-1.1709142.jar | Bin 0 -> 401150 bytes .../1.11build48/iaik_xsect_eval-1.11build48.jar | Bin 0 -> 321478 bytes .../iaik_xsect_eval-1.11build48.jar.sha1 | 1 + .../1.11build48/iaik_xsect_eval-1.11build48.pom | 32 ++ .../iaik_xsect_eval-1.11build48.pom.sha1 | 1 + .../iaik_xsect_eval/1.17/iaik_xsect_eval-1.17.jar | Bin 0 -> 572245 bytes .../1.1709142/iaik_xsect_eval-1.1709142.jar | Bin 0 -> 419996 bytes repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.jar | Bin 0 -> 205197 bytes repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.pom | 7 + repository/iaik/jce/3.18/jce-3.18.jar | Bin 0 -> 919238 bytes repository/iaik/jce/3.18/jce-3.18.pom | 7 + .../iaik/moa/1.28/m2e-lastUpdated.properties | 10 + repository/iaik/moa/1.28/moa-1.28.jar | Bin 0 -> 711652 bytes repository/iaik/moa/1.28/moa-1.28.pom | 7 + .../2006-03-20/moa_common-2006-03-20.jar | Bin 0 -> 100788 bytes .../0.3/m2e-lastUpdated.properties | 10 + .../iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar | Bin 0 -> 365565 bytes .../4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.md5 | 1 + .../4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.sha1 | 1 + .../iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom | 6 + .../4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.md5 | 1 + .../4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.sha1 | 1 + .../iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar | Bin 0 -> 111446 bytes .../iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom | 6 + .../4.0_MOA/iaik_jce_full-4.0_MOA.jar.sha1 | 1 + .../4.0_MOA/iaik_jce_full-4.0_MOA.pom.sha1 | 1 + .../5.101/iaik_jce_full-5.101.jar.lastUpdated | 22 - .../5.101/iaik_jce_full-5.101.pom.lastUpdated | 12 - .../prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar | Bin 0 -> 999669 bytes .../iaik_jce_full/iaik_jce_full-4.0_MOA.jar.sha1 | 1 + .../prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom | 6 + .../iaik_jce_full/iaik_jce_full-4.0_MOA.pom.sha1 | 1 + .../prod/iaik_moa/1.32/m2e-lastUpdated.properties | 10 + .../prod/iaik_moa/1.5/iaik_moa-1.5.jar.lastUpdated | 22 - .../prod/iaik_moa/1.5/iaik_moa-1.5.pom.lastUpdated | 12 - .../prod/iaik_moa/1.5/m2e-lastUpdated.properties | 9 + .../iaik_tsl-0.0.2-SNAPSHOT.jar.lastUpdated | 3 - .../iaik_tsl-0.0.2-SNAPSHOT.pom.lastUpdated | 3 - repository/iaik/w3c_http/1.0/w3c_http-1.0.jar | Bin 0 -> 178605 bytes repository/iaik/xsect/1.02/xsect-1.02.jar | Bin 0 -> 327071 bytes .../sqlite-jdbc-3.7.8-SNAPSHOT.jar.lastUpdated | 3 - .../sqlite-jdbc-3.7.8-SNAPSHOT.pom.lastUpdated | 3 - .../serializer-2.10.0-sources.jar.lastUpdated | 8 - .../2.7.1/serializer-2.7.1.jar.lastUpdated | 20 - .../2.7.1/serializer-2.7.1.pom.lastUpdated | 12 - .../2.10.0/xml-apis-2.10.0-sources.jar.lastUpdated | 8 - .../xml-apis/2.7.1/xml-apis-2.7.1.jar.lastUpdated | 20 - .../xml-apis/2.7.1/xml-apis-2.7.1.pom.lastUpdated | 12 - 130 files changed, 2334 insertions(+), 201 deletions(-) delete mode 100644 repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar.lastUpdated delete mode 100644 repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom.lastUpdated delete mode 100644 repository/eu/stork/Commons/1.2.0/_maven.repositories create mode 100644 repository/iaik/asit/1.3.4/asit-1.3.4.jar create mode 100644 repository/iaik/asit/1.3.4/asit-1.3.4.jar.md5 create mode 100644 repository/iaik/asit/1.3.4/asit-1.3.4.jar.sha1 create mode 100644 repository/iaik/asit/1.3.4/asit-1.3.4.pom create mode 100644 repository/iaik/asit/1.3.4/asit-1.3.4.pom.md5 create mode 100644 repository/iaik/asit/1.3.4/asit-1.3.4.pom.sha1 create mode 100644 repository/iaik/asit/1.3.5/asit-1.3.5.jar create mode 100644 repository/iaik/asit/1.3.5/asit-1.3.5.jar.sha1 create mode 100644 repository/iaik/asit/1.3.5/asit-1.3.5.pom create mode 100644 repository/iaik/asit/1.3.5/asit-1.3.5.pom.sha1 create mode 100644 repository/iaik/asit/1.3.6/asit-1.3.6-javadoc.jar create mode 100644 repository/iaik/asit/1.3.6/asit-1.3.6-sources.jar create mode 100644 repository/iaik/asit/1.3.6/asit-1.3.6.jar create mode 100644 repository/iaik/asit/1.3.6/asit-1.3.6.pom create mode 100644 repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar create mode 100644 repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar.sha1 create mode 100644 repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom create mode 100644 repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom.sha1 create mode 100644 repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar create mode 100644 repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.md5 create mode 100644 repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.sha1 create mode 100644 repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom create mode 100644 repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.md5 create mode 100644 repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.sha1 create mode 100644 repository/iaik/commons-iaik/0.6.2/commons-iaik-0.6.2.jar create mode 100644 repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.md5 create mode 100644 repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.sha1 create mode 100644 repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.md5 create mode 100644 repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.sha1 create mode 100644 repository/iaik/commons-iaik/0.7.1/m2e-lastUpdated.properties create mode 100644 repository/iaik/ecc/3.18/ecc-3.18.jar create mode 100644 repository/iaik/ecc/3.18/ecc-3.18.pom create mode 100644 repository/iaik/iaikPkcs11Provider/1.3/iaikPkcs11Provider-1.3.jar create mode 100644 repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.jar create mode 100644 repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.pom create mode 100644 repository/iaik/iaik_ecc_eval_signed/2.15/iaik_ecc_eval_signed-2.15.jar create mode 100644 repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.jar create mode 100644 repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.pom create mode 100644 repository/iaik/iaik_ecc_signed/2.19/iaik_ecc.jar create mode 100644 repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar create mode 100644 repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar.sha1 create mode 100644 repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom create mode 100644 repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom.sha1 create mode 100644 repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0-eval.jar create mode 100644 repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0.pom create mode 100644 repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar create mode 100644 repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar.sha1 create mode 100644 repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar create mode 100644 repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar.sha1 create mode 100644 repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom create mode 100644 repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom.sha1 create mode 100644 repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.jar create mode 100644 repository/iaik/iaik_jce_eval_signed/3.16/iaik_jce_eval_signed-3.16.jar create mode 100644 repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar create mode 100644 repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.jar create mode 100644 repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.pom create mode 100644 repository/iaik/iaik_jce_full/5.101/iaik_jce_full-5.101.jar create mode 100644 repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.jar create mode 100644 repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.pom create mode 100644 repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.jar create mode 100644 repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.pom create mode 100644 repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.jar create mode 100644 repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.jar create mode 100644 repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.pom create mode 100644 repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.jar create mode 100644 repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.jar create mode 100644 repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.jar create mode 100644 repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.pom create mode 100644 repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/maven-metadata-local.xml create mode 100644 repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.jar create mode 100644 repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.pom create mode 100644 repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar create mode 100644 repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom create mode 100644 repository/iaik/iaik_tsl/maven-metadata-local.xml create mode 100644 repository/iaik/iaik_util/0.23/iaik_util-0.23.jar create mode 100644 repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar create mode 100644 repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar.sha1 create mode 100644 repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom create mode 100644 repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom.sha1 create mode 100644 repository/iaik/iaik_xsect/1.1709142/iaik_xsect-1.1709142.jar create mode 100644 repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar create mode 100644 repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar.sha1 create mode 100644 repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom create mode 100644 repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom.sha1 create mode 100644 repository/iaik/iaik_xsect_eval/1.17/iaik_xsect_eval-1.17.jar create mode 100644 repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.jar create mode 100644 repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.jar create mode 100644 repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.pom create mode 100644 repository/iaik/jce/3.18/jce-3.18.jar create mode 100644 repository/iaik/jce/3.18/jce-3.18.pom create mode 100644 repository/iaik/moa/1.28/m2e-lastUpdated.properties create mode 100644 repository/iaik/moa/1.28/moa-1.28.jar create mode 100644 repository/iaik/moa/1.28/moa-1.28.pom create mode 100644 repository/iaik/moa_common/2006-03-20/moa_common-2006-03-20.jar create mode 100644 repository/iaik/prod/iaik_X509TrustManager/0.3/m2e-lastUpdated.properties create mode 100644 repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar create mode 100644 repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.md5 create mode 100644 repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.sha1 create mode 100644 repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom create mode 100644 repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.md5 create mode 100644 repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.sha1 create mode 100644 repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar create mode 100644 repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom create mode 100644 repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.jar.sha1 create mode 100644 repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.pom.sha1 delete mode 100644 repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.jar.lastUpdated delete mode 100644 repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.pom.lastUpdated create mode 100644 repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar create mode 100644 repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar.sha1 create mode 100644 repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom create mode 100644 repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom.sha1 create mode 100644 repository/iaik/prod/iaik_moa/1.32/m2e-lastUpdated.properties delete mode 100644 repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.jar.lastUpdated delete mode 100644 repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.pom.lastUpdated create mode 100644 repository/iaik/prod/iaik_moa/1.5/m2e-lastUpdated.properties delete mode 100644 repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.jar.lastUpdated delete mode 100644 repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.pom.lastUpdated create mode 100644 repository/iaik/w3c_http/1.0/w3c_http-1.0.jar create mode 100644 repository/iaik/xsect/1.02/xsect-1.02.jar delete mode 100644 repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.jar.lastUpdated delete mode 100644 repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.pom.lastUpdated delete mode 100644 repository/xalan-bin-dist/serializer/2.10.0/serializer-2.10.0-sources.jar.lastUpdated delete mode 100644 repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.jar.lastUpdated delete mode 100644 repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.pom.lastUpdated delete mode 100644 repository/xalan-bin-dist/xml-apis/2.10.0/xml-apis-2.10.0-sources.jar.lastUpdated delete mode 100644 repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.jar.lastUpdated delete mode 100644 repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.pom.lastUpdated (limited to 'repository') diff --git a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar.lastUpdated b/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar.lastUpdated deleted file mode 100644 index 4ad7d8504..000000000 --- a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar.lastUpdated +++ /dev/null @@ -1,18 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Tue Jan 21 10:52:56 CET 2014 -http\://nexus/nexus/content/repositories/thirdparty/.error= -http\://nexus/nexus/content/repositories/thirdparty/.lastUpdated=1390294493630 -http\://repository.highsource.org/maven2/releases/.lastUpdated=1390294493686 -https\://maven.java.net/content/groups/public/.lastUpdated=1390294492665 -https\://build.shibboleth.net/nexus/content/repositories/releases/.error= -http\://nexus.iaik.tugraz.at/nexus/content/groups/public/.lastUpdated=1390294493516 -http\://nexus/nexus/content/repositories/iaik/.error= -http\://nexus.iaik.tugraz.at/nexus/content/groups/internal/.lastUpdated=1390294493559 -https\://maven.java.net/content/groups/public/.error= -http\://nexus.iaik.tugraz.at/nexus/content/groups/public/.error= -http\://repository.highsource.org/maven2/releases/.error= -http\://nexus/nexus/content/repositories/iaik/.lastUpdated=1390294493594 -https\://build.shibboleth.net/nexus/content/repositories/releases/.lastUpdated=1390297976623 -http\://repo1.maven.org/maven2/.error= -http\://repo1.maven.org/maven2/.lastUpdated=1390294491645 -http\://nexus.iaik.tugraz.at/nexus/content/groups/internal/.error= diff --git a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom.lastUpdated b/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom.lastUpdated deleted file mode 100644 index 724605e3d..000000000 --- a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom.lastUpdated +++ /dev/null @@ -1,18 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Tue Jan 21 10:52:55 CET 2014 -http\://nexus/nexus/content/repositories/thirdparty/.error= -http\://nexus/nexus/content/repositories/thirdparty/.lastUpdated=1390294486900 -http\://repository.highsource.org/maven2/releases/.lastUpdated=1390294486950 -https\://maven.java.net/content/groups/public/.lastUpdated=1390294486187 -https\://build.shibboleth.net/nexus/content/repositories/releases/.error= -http\://nexus.iaik.tugraz.at/nexus/content/groups/public/.lastUpdated=1390294486856 -http\://nexus/nexus/content/repositories/iaik/.error= -http\://nexus.iaik.tugraz.at/nexus/content/groups/internal/.lastUpdated=1390294486871 -https\://maven.java.net/content/groups/public/.error= -http\://nexus.iaik.tugraz.at/nexus/content/groups/public/.error= -http\://repository.highsource.org/maven2/releases/.error= -http\://nexus/nexus/content/repositories/iaik/.lastUpdated=1390294486886 -https\://build.shibboleth.net/nexus/content/repositories/releases/.lastUpdated=1390297975929 -http\://repo1.maven.org/maven2/.error= -http\://repo1.maven.org/maven2/.lastUpdated=1390294485367 -http\://nexus.iaik.tugraz.at/nexus/content/groups/internal/.error= diff --git a/repository/eu/stork/Commons/1.2.0/_maven.repositories b/repository/eu/stork/Commons/1.2.0/_maven.repositories deleted file mode 100644 index b8bd3bc0f..000000000 --- a/repository/eu/stork/Commons/1.2.0/_maven.repositories +++ /dev/null @@ -1,5 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Mon Feb 03 08:22:50 CET 2014 -Commons-1.2.0.jar>= -Commons-1.2.0-sources.jar>= -Commons-1.2.0.pom>= diff --git a/repository/iaik/asit/1.3.4/asit-1.3.4.jar b/repository/iaik/asit/1.3.4/asit-1.3.4.jar new file mode 100644 index 000000000..e331f467c Binary files /dev/null and b/repository/iaik/asit/1.3.4/asit-1.3.4.jar differ diff --git a/repository/iaik/asit/1.3.4/asit-1.3.4.jar.md5 b/repository/iaik/asit/1.3.4/asit-1.3.4.jar.md5 new file mode 100644 index 000000000..b34c0523d --- /dev/null +++ b/repository/iaik/asit/1.3.4/asit-1.3.4.jar.md5 @@ -0,0 +1 @@ +b7224977a72089a9d5e78af0b402c56d \ No newline at end of file diff --git a/repository/iaik/asit/1.3.4/asit-1.3.4.jar.sha1 b/repository/iaik/asit/1.3.4/asit-1.3.4.jar.sha1 new file mode 100644 index 000000000..c7a57ac50 --- /dev/null +++ b/repository/iaik/asit/1.3.4/asit-1.3.4.jar.sha1 @@ -0,0 +1 @@ +d3d60e9f28392c28c8a8ece918281bce5358dd59 \ No newline at end of file diff --git a/repository/iaik/asit/1.3.4/asit-1.3.4.pom b/repository/iaik/asit/1.3.4/asit-1.3.4.pom new file mode 100644 index 000000000..93ca1f600 --- /dev/null +++ b/repository/iaik/asit/1.3.4/asit-1.3.4.pom @@ -0,0 +1,390 @@ + + + 4.0.0 + + iaik + asit + 1.3.4 + + jar + + A-SIT framework + Framework fuer A-SIT Anwendungen + http://www.iaik.tugraz.at + 2007 + + + + atauber + Arne Tauber + IAIK + arne.tauber@iaik.tugraz.at + +1 + + developer + + + + tknall + Thomas Knall + IAIK + thomas.knall@iaik.tugraz.at + +1 + + developer + + + + troessler + Thomas Roessler + IAIK + thomas.roessler@iaik.tugraz.at + +1 + + developer + + + + + + continuum + http://development:8088/continuum + + + mail + +
tknall
+
+
+ + mail + +
atauber
+
+
+
+
+ + + scm:svn:http://bugzilla.iaik.tugraz.at/svn/egiz/prj/current/framework/asit/trunk + scm:svn:http://bugzilla.iaik.tugraz.at/svn/egiz/prj/current/framework/asit/trunk + http://bugzilla.iaik.tugraz.at/svn/egiz/prj/current/framework/asit/trunk + + + + Institut fuer Angewandte Informationsverarbeitung und Kommunikationstechnologie + http://www.iaik.tugraz.at/ + + + + + website + + file://development/c:/data/public/websites/PROJECTS/${pom.artifactId}/${pom.version} + + + + + + + + + true + src/main/resources + + **/package.html + **/.svn + + + + false + src/main/java + + **/package.html + **/.svn + + + + + ${artifactId}-${version} + + + + maven-surefire-plugin + + + + + + maven-site-plugin + + en + + + + + maven-compiler-plugin + + + + + + asit/test/*/ + + 1.4 + 1.4 + + + + + maven-jar-plugin + + + + + true + + + + + + + maven-assembly-plugin + + src/main/assembly/assemble_libraries.xml + + + + + maven-javadoc-plugin + + + true + true + true + + http://java.sun.com/j2se/1.5.0/docs/api/ + http://java.sun.com/j2ee/1.4/docs/api/ + http://struts.apache.org/1.2.4/api/ + http://logging.apache.org/log4j/docs/api/ + + 1.4 + 1.4 + ${pom.name} v${pom.version}:${build.date} API + Copyright ${pom.inceptionYear} <a href="${pom.organization.url}" target="_blank">${pom.organization.name}</a>. All Rights Reserved. + + + + + + + + + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + dependencies + project-team + + + + + + + + + + + + maven-javadoc-plugin + + + true + true + true + + http://java.sun.com/j2se/1.4.2/docs/api/ + http://java.sun.com/j2ee/1.4/docs/api/ + http://struts.apache.org/1.2.4/api/ + http://logging.apache.org/log4j/docs/api/ + + 1.4 + 1.4 + ${pom.name} v${pom.version}:${build.date} API + Copyright ${pom.inceptionYear} <a href="${pom.organization.url}" target="_blank">${pom.organization.name}</a>. All Rights Reserved. + + + + + + + org.apache.maven.plugins + maven-changes-plugin + + ${basedir}/src/site/changes.xml + + + + + changes-report + + + + + + + org.codehaus.mojo + taglist-maven-plugin + 2.0-beta-1 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + + org.apache.maven.plugins + maven-surefire-report-plugin + + true + + + + + org.apache.maven.plugins + maven-pmd-plugin + + 1.5 + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + ${basedir}/src/site/checkstyle.xml + + + + + + + + + + javax.servlet + servlet-api + 2.3 + provided + + + true + + + struts + struts + 1.2.4 + true + + + iaik + iaik_jce_eval_signed + 3.142 + true + + + iaik + iaik_ixsil_eval + 1.2.0 + true + + + javax.mail + mail + 1.4 + true + + + commons-logging + commons-logging + 1.0.3 + true + + + log4j + log4j + 1.2.8 + true + + + iaik + iaik_ecc_eval_signed + 2.15 + true + + + net.sf.hibernate + hibernate + 2.1.7c + true + + + fop + fop + 0.20.5 + true + + + axis + axis-jaxrpc + 1.0 + true + + + tomcat + catalina + 4.1.31 + true + + + junit + junit + 4.1 + test + true + + +
diff --git a/repository/iaik/asit/1.3.4/asit-1.3.4.pom.md5 b/repository/iaik/asit/1.3.4/asit-1.3.4.pom.md5 new file mode 100644 index 000000000..3bfb19649 --- /dev/null +++ b/repository/iaik/asit/1.3.4/asit-1.3.4.pom.md5 @@ -0,0 +1 @@ +f42cef68752c2b2c0d6de5a6fb1a9d7c \ No newline at end of file diff --git a/repository/iaik/asit/1.3.4/asit-1.3.4.pom.sha1 b/repository/iaik/asit/1.3.4/asit-1.3.4.pom.sha1 new file mode 100644 index 000000000..9253d46cf --- /dev/null +++ b/repository/iaik/asit/1.3.4/asit-1.3.4.pom.sha1 @@ -0,0 +1 @@ +dd7966e311b2b719ecabe6bb7b6bde3f80d7ce01 \ No newline at end of file diff --git a/repository/iaik/asit/1.3.5/asit-1.3.5.jar b/repository/iaik/asit/1.3.5/asit-1.3.5.jar new file mode 100644 index 000000000..f04ec1e6f Binary files /dev/null and b/repository/iaik/asit/1.3.5/asit-1.3.5.jar differ diff --git a/repository/iaik/asit/1.3.5/asit-1.3.5.jar.sha1 b/repository/iaik/asit/1.3.5/asit-1.3.5.jar.sha1 new file mode 100644 index 000000000..564da72b0 --- /dev/null +++ b/repository/iaik/asit/1.3.5/asit-1.3.5.jar.sha1 @@ -0,0 +1 @@ +56ef339009e19c81b9ead9262c43a84371e2aa73 \ No newline at end of file diff --git a/repository/iaik/asit/1.3.5/asit-1.3.5.pom b/repository/iaik/asit/1.3.5/asit-1.3.5.pom new file mode 100644 index 000000000..58a6e5a09 --- /dev/null +++ b/repository/iaik/asit/1.3.5/asit-1.3.5.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + asit + 1.3.5 + POM was created from install:install-file + diff --git a/repository/iaik/asit/1.3.5/asit-1.3.5.pom.sha1 b/repository/iaik/asit/1.3.5/asit-1.3.5.pom.sha1 new file mode 100644 index 000000000..0fa712339 --- /dev/null +++ b/repository/iaik/asit/1.3.5/asit-1.3.5.pom.sha1 @@ -0,0 +1 @@ +72c48087cb86db39f62d955159710f6cb8dc5d04 \ No newline at end of file diff --git a/repository/iaik/asit/1.3.6/asit-1.3.6-javadoc.jar b/repository/iaik/asit/1.3.6/asit-1.3.6-javadoc.jar new file mode 100644 index 000000000..1ba8dc308 Binary files /dev/null and b/repository/iaik/asit/1.3.6/asit-1.3.6-javadoc.jar differ diff --git a/repository/iaik/asit/1.3.6/asit-1.3.6-sources.jar b/repository/iaik/asit/1.3.6/asit-1.3.6-sources.jar new file mode 100644 index 000000000..ae38e3336 Binary files /dev/null and b/repository/iaik/asit/1.3.6/asit-1.3.6-sources.jar differ diff --git a/repository/iaik/asit/1.3.6/asit-1.3.6.jar b/repository/iaik/asit/1.3.6/asit-1.3.6.jar new file mode 100644 index 000000000..8a754fe81 Binary files /dev/null and b/repository/iaik/asit/1.3.6/asit-1.3.6.jar differ diff --git a/repository/iaik/asit/1.3.6/asit-1.3.6.pom b/repository/iaik/asit/1.3.6/asit-1.3.6.pom new file mode 100644 index 000000000..7770aef52 --- /dev/null +++ b/repository/iaik/asit/1.3.6/asit-1.3.6.pom @@ -0,0 +1,390 @@ + + + 4.0.0 + + iaik + asit + 1.3.6 + + jar + + A-SIT framework + Framework fuer A-SIT Anwendungen + http://www.iaik.tugraz.at + 2007 + + + + atauber + Arne Tauber + IAIK + arne.tauber@iaik.tugraz.at + +1 + + developer + + + + tknall + Thomas Knall + IAIK + thomas.knall@iaik.tugraz.at + +1 + + developer + + + + troessler + Thomas Roessler + IAIK + thomas.roessler@iaik.tugraz.at + +1 + + developer + + + + + + continuum + http://development:8088/continuum + + + mail + +
tknall
+
+
+ + mail + +
atauber
+
+
+
+
+ + + scm:svn:http://bugzilla.iaik.tugraz.at/svn/egiz/prj/current/framework/asit/trunk + scm:svn:http://bugzilla.iaik.tugraz.at/svn/egiz/prj/current/framework/asit/trunk + http://bugzilla.iaik.tugraz.at/svn/egiz/prj/current/framework/asit/trunk + + + + Institut fuer Angewandte Informationsverarbeitung und Kommunikationstechnologie + http://www.iaik.tugraz.at/ + + + + + website + + file://development/c:/data/public/websites/PROJECTS/${pom.artifactId}/${pom.version} + + + + + + + + + true + src/main/resources + + **/package.html + **/.svn + + + + false + src/main/java + + **/package.html + **/.svn + + + + + ${artifactId}-${version} + + + + maven-surefire-plugin + + + + + + maven-site-plugin + + en + + + + + maven-compiler-plugin + + + + + + asit/test/*/ + + 1.4 + 1.4 + + + + + maven-jar-plugin + + + + + true + + + + + + + maven-assembly-plugin + + src/main/assembly/assemble_libraries.xml + + + + + maven-javadoc-plugin + + + true + true + true + + http://java.sun.com/j2se/1.5.0/docs/api/ + http://java.sun.com/j2ee/1.4/docs/api/ + http://struts.apache.org/1.2.4/api/ + http://logging.apache.org/log4j/docs/api/ + + 1.4 + 1.4 + ${pom.name} v${pom.version}:${build.date} API + Copyright ${pom.inceptionYear} <a href="${pom.organization.url}" target="_blank">${pom.organization.name}</a>. All Rights Reserved. + + + + + + + + + + + + org.apache.maven.plugins + maven-project-info-reports-plugin + + + + dependencies + project-team + + + + + + + + + + + + maven-javadoc-plugin + + + true + true + true + + http://java.sun.com/j2se/1.4.2/docs/api/ + http://java.sun.com/j2ee/1.4/docs/api/ + http://struts.apache.org/1.2.4/api/ + http://logging.apache.org/log4j/docs/api/ + + 1.4 + 1.4 + ${pom.name} v${pom.version}:${build.date} API + Copyright ${pom.inceptionYear} <a href="${pom.organization.url}" target="_blank">${pom.organization.name}</a>. All Rights Reserved. + + + + + + + org.apache.maven.plugins + maven-changes-plugin + + ${basedir}/src/site/changes.xml + + + + + changes-report + + + + + + + org.codehaus.mojo + taglist-maven-plugin + 2.0-beta-1 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + + org.apache.maven.plugins + maven-surefire-report-plugin + + true + + + + + org.apache.maven.plugins + maven-pmd-plugin + + 1.5 + + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + ${basedir}/src/site/checkstyle.xml + + + + + + + + + + javax.servlet + servlet-api + 2.3 + provided + + + true + + + struts + struts + 1.2.4 + true + + + iaik + iaik_jce_eval_signed + 3.142 + true + + + iaik + iaik_ixsil_eval + 1.2.0 + true + + + javax.mail + mail + 1.4 + true + + + commons-logging + commons-logging + 1.0.3 + true + + + log4j + log4j + 1.2.8 + true + + + iaik + iaik_ecc_eval_signed + 2.15 + true + + + net.sf.hibernate + hibernate + 2.1.7c + true + + + fop + fop + 0.20.5 + true + + + axis + axis-jaxrpc + 1.0 + true + + + tomcat + catalina + 4.1.31 + true + + + junit + junit + 4.1 + test + true + + +
diff --git a/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar new file mode 100644 index 000000000..78bdc2f58 Binary files /dev/null and b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar differ diff --git a/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar.sha1 b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar.sha1 new file mode 100644 index 000000000..2f7b99a43 --- /dev/null +++ b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.jar.sha1 @@ -0,0 +1 @@ +3cd8e2702cc2706dca2cd68e675e96b115edca6c diff --git a/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom new file mode 100644 index 000000000..20666ba88 --- /dev/null +++ b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom @@ -0,0 +1,6 @@ + + 4.0.0 + iaik + bescheide + 2007-09-13 + diff --git a/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom.sha1 b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom.sha1 new file mode 100644 index 000000000..44af41359 --- /dev/null +++ b/repository/iaik/bescheide/2007-09-13/bescheide-2007-09-13.pom.sha1 @@ -0,0 +1 @@ +0ae1ab9cc1b907d2c6dfcc227637dc72faca95fa diff --git a/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar new file mode 100644 index 000000000..b9b08856c Binary files /dev/null and b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar differ diff --git a/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.md5 b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.md5 new file mode 100644 index 000000000..1b409ac45 --- /dev/null +++ b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.md5 @@ -0,0 +1 @@ +a9ebe33840edea5854f3e8b8c0c03cab \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.sha1 b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.sha1 new file mode 100644 index 000000000..c7e599b34 --- /dev/null +++ b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.jar.sha1 @@ -0,0 +1 @@ +b999d8a518efa41bdf67bd9fd964e9b09affe5dd \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom new file mode 100644 index 000000000..3f6ccf7e5 --- /dev/null +++ b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom @@ -0,0 +1,633 @@ + + + 4.0.0 + + iaik + commons-iaik + COMMONS IAIK Library + 0.5.5 + + Sammlung haeufig verwendeter Klassen und Methoden + http://www.iaik.tugraz.at + 2006 + + + tknall + Thomas Knall + thomas.knall@iaik.tugraz.at + IAIK + + developer + + +1 + + + + + IAIK - Institute for Applied Information Processing and Communications + http://www.iaik.tugraz.at + + + + + + + + + scm:svn:http://bugzilla.iaik.tugraz.at/asit/prj/commons-iaik/trunk/ + http://bugzilla.iaik.tugraz.at/asit/prj/commons-iaik/trunk/ + + + + + website + + file://development/c:/data/public/websites/PROJECTS/${artifactId}/${project.version} + + + + + + + + + + true + src/main/resources + + **/CommonsIAIK.properties + + + srgb.profile + + + + false + src/main/resources + + + **/taglib.tld + + + srgb.profile + + + + false + src/main/java + + **/*.xml + **/*.xsd + + + **/application_config.xml + **/application_default_config.xml + + + + + + ${artifactId}-${version} + + + + + org.apache.maven.plugins + maven-surefire-plugin + 2.3 + + true + + + + maven-site-plugin + + en + + + + maven-compiler-plugin + + 1.5 + 1.5 + + at/iaik/commons/test/*/ + + + + + + maven-jar-plugin + + + + at.iaik.commons.metadata.CommonsIAIK + + true + true + + + + ${build.date} + + + + + + maven-assembly-plugin + 2.2-beta-2 + + + + src/main/assembly/assemble_libraries.xml + + + + + maven-javadoc-plugin + + + public + + http://java.sun.com/j2se/1.5.0/docs/api/ + http://java.sun.com/j2ee/1.4/docs/api/ + + http://struts.apache.org/1.3.10/apidocs/ + http://logging.apache.org/log4j/docs/api/ + http://www.jconfig.org/javadoc/ + http://www.hibernate.org/hib_docs/v3/api/ + http://tomcat.apache.org/tomcat-5.5-doc/catalina/docs/api/ + http://www.saxproject.org/apidoc/ + + 1.5 + 1.5 + false + ${pom.name} v${pom.version}:${build.date} API + Copyright ${pom.inceptionYear} <a href="${pom.organization.url}" target="_blank">${pom.organization.name}</a>. All Rights Reserved. + + + + + + + + + + + javax.servlet + servlet-api + 2.4 + true + + + javax.servlet + jsp-api + 2.0 + true + + + + + + org.apache.struts + struts-core + 1.3.10 + true + + + + org.apache.struts + struts-taglib + 1.3.10 + true + + + + org.hibernate + hibernate + 3.1.3 + true + + + log4j + log4j + 1.2.14 + true + + + org.jconfig + jconfig + 2.9 + true + + + axis + axis + 1.1 + true + + + axis + axis-saaj + 1.0 + true + + + axis + axis-wsdl4j + 1.0 + true + + + axis + axis-jaxrpc + 1.0 + true + + + commons-discovery + commons-discovery + 0.2 + true + + + jdom + jdom + 1.0 + true + + + javax.mail + mail + 1.4 + true + + + xerces + xercesImpl + 2.9.1 + true + + + tomcat + catalina + 5.0.28 + true + + + xml-apis + xml-apis + 1.3.02 + true + + + commons-io + commons-io + 1.4 + true + + + org.apache.serializer + serializer + 2.7.0 + true + + + org.apache.xmlgraphics + xmlgraphics-commons + 1.0 + true + + + xalan + xalan + 2.7.1 + true + + + junit + junit + 4.1 + test + true + + + commons-lang + commons-lang + 2.4 + true + + + commons-codec + commons-codec + 1.3 + true + + + commons-httpclient + commons-httpclient + 3.1 + true + + + iaik + iaik_jce_eval_signed + 3.16 + true + + + iaik + iaik_ixsil_eval + 1.2.2 + true + + + iaik + asit + 1.3.4 + true + + + iaik + zsproxy + 2007-03-02 + true + + + batik + batik-all + 1.6 + true + + + fop + fop + 0.92beta + true + + + knowcenter + pdf-as + 3.0.9-20090203 + true + + + iaik + iaik_xsect_eval + 1.11build48 + true + + + iaik + iaik_ecc_eval_signed + 2.15 + true + + + iaik + iaik_cms_eval + 4.0 + true + + + at.gv.bmi + szr-client + 3.71 + true + + + commons-cli + commons-cli + 1.1 + true + + + com.lowagie + itext + + 2.1.3 + true + + + commons-logging + commons-logging + 1.1.1 + true + + + javax.xml.bind + jaxb-api + 2.1 + true + + + javax.xml + jaxb-impl + 2.1.6 + true + + + + + + 2009-02-05 + + + + + + + + org.apache.maven.plugins + + maven-project-info-reports-plugin + + + + + dependencies + project-team + + cim + + license + scm + + + + + + + maven-javadoc-plugin + + + true + true + true + + http://java.sun.com/j2se/1.5.0/docs/api/ + http://java.sun.com/j2ee/1.4/docs/api/ + + http://struts.apache.org/1.3.10/apidocs/ + http://logging.apache.org/log4j/docs/api/ + + 1.5 + 1.5 + ${pom.name} v${pom.version}:${build.date} API + Copyright ${pom.inceptionYear} <a href="${pom.organization.url}" target="_blank">${pom.organization.name}</a>. All Rights Reserved. + + + + + org.codehaus.mojo + taglist-maven-plugin + 2.0-beta-1 + + + + org.apache.maven.plugins + maven-jxr-plugin + + + + org.apache.maven.plugins + maven-surefire-report-plugin + + true + + + + + org.apache.maven.plugins + maven-pmd-plugin + + 1.5 + + + + + org.apache.maven.plugins + maven-changes-plugin + + ${basedir}/src/site/changes.xml + + + + + changes-report + + + + + + + org.apache.maven.plugins + maven-clover-plugin + + + + org.codehaus.mojo + changelog-maven-plugin + 2.0-beta-1 + + range + 30 + + + + + org.apache.maven.plugins + maven-docck-plugin + + + + org.apache.maven.plugins + maven-checkstyle-plugin + + + ${basedir}/src/site/checkstyle/sun_checks_modified.xml + + + + + + + + + diff --git a/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.md5 b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.md5 new file mode 100644 index 000000000..11fa5b7a1 --- /dev/null +++ b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.md5 @@ -0,0 +1 @@ +e0ba073d10f5a19f62322fc171971ff0 \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.sha1 b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.sha1 new file mode 100644 index 000000000..24cc66dfb --- /dev/null +++ b/repository/iaik/commons-iaik/0.5.5/commons-iaik-0.5.5.pom.sha1 @@ -0,0 +1 @@ +ecb2fcf08eb6f8a89ec587edd908fbb7d312a5ca \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.6.2/commons-iaik-0.6.2.jar b/repository/iaik/commons-iaik/0.6.2/commons-iaik-0.6.2.jar new file mode 100644 index 000000000..c6ed59d02 Binary files /dev/null and b/repository/iaik/commons-iaik/0.6.2/commons-iaik-0.6.2.jar differ diff --git a/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.md5 b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.md5 new file mode 100644 index 000000000..f2d00d34a --- /dev/null +++ b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.md5 @@ -0,0 +1 @@ +fc0104930f152e891ee26d6e7c494959 \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.sha1 b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.sha1 new file mode 100644 index 000000000..b6bf33e23 --- /dev/null +++ b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.jar.sha1 @@ -0,0 +1 @@ +ba2377c57bd8d1000ccd825d0f1276e2111e19dd \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.md5 b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.md5 new file mode 100644 index 000000000..fac84458d --- /dev/null +++ b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.md5 @@ -0,0 +1 @@ +8fce1151c5036c1d834f0374f05b9482 \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.sha1 b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.sha1 new file mode 100644 index 000000000..313186a5e --- /dev/null +++ b/repository/iaik/commons-iaik/0.7.1/commons-iaik-0.7.1.pom.sha1 @@ -0,0 +1 @@ +dbbc777d5bf8d49d61febfda94fa67d3e12f081f \ No newline at end of file diff --git a/repository/iaik/commons-iaik/0.7.1/m2e-lastUpdated.properties b/repository/iaik/commons-iaik/0.7.1/m2e-lastUpdated.properties new file mode 100644 index 000000000..439757873 --- /dev/null +++ b/repository/iaik/commons-iaik/0.7.1/m2e-lastUpdated.properties @@ -0,0 +1,3 @@ +#Mon Jan 09 10:07:25 CET 2012 +*|http\://nexus.iaik.tugraz.at/nexus/content/groups/internal|sources=1326100045570 +central|http\://repo1.maven.org/maven2|sources=1326100045570 diff --git a/repository/iaik/ecc/3.18/ecc-3.18.jar b/repository/iaik/ecc/3.18/ecc-3.18.jar new file mode 100644 index 000000000..abe38aea9 Binary files /dev/null and b/repository/iaik/ecc/3.18/ecc-3.18.jar differ diff --git a/repository/iaik/ecc/3.18/ecc-3.18.pom b/repository/iaik/ecc/3.18/ecc-3.18.pom new file mode 100644 index 000000000..266ef0cf8 --- /dev/null +++ b/repository/iaik/ecc/3.18/ecc-3.18.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + ecc + IAIK ECC + 3.18 + \ No newline at end of file diff --git a/repository/iaik/iaikPkcs11Provider/1.3/iaikPkcs11Provider-1.3.jar b/repository/iaik/iaikPkcs11Provider/1.3/iaikPkcs11Provider-1.3.jar new file mode 100644 index 000000000..de1364ee9 Binary files /dev/null and b/repository/iaik/iaikPkcs11Provider/1.3/iaikPkcs11Provider-1.3.jar differ diff --git a/repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.jar b/repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.jar new file mode 100644 index 000000000..4a5fca3d7 Binary files /dev/null and b/repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.jar differ diff --git a/repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.pom b/repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.pom new file mode 100644 index 000000000..0594f8ef9 --- /dev/null +++ b/repository/iaik/iaik_ecc/2.19/iaik_ecc-2.19.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_ecc + 2.19 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_ecc_eval_signed/2.15/iaik_ecc_eval_signed-2.15.jar b/repository/iaik/iaik_ecc_eval_signed/2.15/iaik_ecc_eval_signed-2.15.jar new file mode 100644 index 000000000..dbed40bcd Binary files /dev/null and b/repository/iaik/iaik_ecc_eval_signed/2.15/iaik_ecc_eval_signed-2.15.jar differ diff --git a/repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.jar b/repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.jar new file mode 100644 index 000000000..740f04a85 Binary files /dev/null and b/repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.jar differ diff --git a/repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.pom b/repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.pom new file mode 100644 index 000000000..7fb88a18f --- /dev/null +++ b/repository/iaik/iaik_ecc_signed/2.15/iaik_ecc_signed-2.15.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + iaik_ecc_signed + 2.15 + POM was created from install:install-file + \ No newline at end of file diff --git a/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc.jar b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc.jar new file mode 100644 index 000000000..abe38aea9 Binary files /dev/null and b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc.jar differ diff --git a/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar new file mode 100644 index 000000000..abe38aea9 Binary files /dev/null and b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar differ diff --git a/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar.sha1 b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar.sha1 new file mode 100644 index 000000000..c1f515b9e --- /dev/null +++ b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar.sha1 @@ -0,0 +1 @@ +9bc26b101cf5ea86e060039e6df16f2df0c2fee1 \ No newline at end of file diff --git a/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom new file mode 100644 index 000000000..a3f6474bf --- /dev/null +++ b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_ecc_signed + 2.19 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom.sha1 b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom.sha1 new file mode 100644 index 000000000..40428a2b8 --- /dev/null +++ b/repository/iaik/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom.sha1 @@ -0,0 +1 @@ +40c799da1addc280c4f04cfe65cab2b35cdf90b7 \ No newline at end of file diff --git a/repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0-eval.jar b/repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0-eval.jar new file mode 100644 index 000000000..ada154483 Binary files /dev/null and b/repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0-eval.jar differ diff --git a/repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0.pom b/repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0.pom new file mode 100644 index 000000000..0626c9021 --- /dev/null +++ b/repository/iaik/iaik_ixsil/1.2.0/iaik_ixsil-1.2.0.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_ixsil + 1.2.0 + Artifactory auto generated POM + \ No newline at end of file diff --git a/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar new file mode 100644 index 000000000..95cc68e85 Binary files /dev/null and b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar differ diff --git a/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar.sha1 b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar.sha1 new file mode 100644 index 000000000..aca85e0e9 --- /dev/null +++ b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2-javadoc.jar.sha1 @@ -0,0 +1 @@ +eacf3e640ba6d84a2b57c65542522b6d4e5de5aa diff --git a/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar new file mode 100644 index 000000000..99b77eeef Binary files /dev/null and b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar differ diff --git a/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar.sha1 b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar.sha1 new file mode 100644 index 000000000..b2419ec9d --- /dev/null +++ b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.jar.sha1 @@ -0,0 +1 @@ +324132b942f7b1120f65c6ef7bede0e0fd9d918c diff --git a/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom new file mode 100644 index 000000000..54b44ad19 --- /dev/null +++ b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom @@ -0,0 +1,6 @@ + + 4.0.0 + iaik + iaik_ixsil_eval + 1.2.2 + diff --git a/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom.sha1 b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom.sha1 new file mode 100644 index 000000000..4ecc2e613 --- /dev/null +++ b/repository/iaik/iaik_ixsil_eval/1.2.2/iaik_ixsil_eval-1.2.2.pom.sha1 @@ -0,0 +1 @@ +91c3b7dfbe45e151de8ba51e8f433fb8ea3dc7d4 diff --git a/repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.jar b/repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.jar new file mode 100644 index 000000000..e4531328b Binary files /dev/null and b/repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.jar differ diff --git a/repository/iaik/iaik_jce_eval_signed/3.16/iaik_jce_eval_signed-3.16.jar b/repository/iaik/iaik_jce_eval_signed/3.16/iaik_jce_eval_signed-3.16.jar new file mode 100644 index 000000000..5687b9106 Binary files /dev/null and b/repository/iaik/iaik_jce_eval_signed/3.16/iaik_jce_eval_signed-3.16.jar differ diff --git a/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar b/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar new file mode 100644 index 000000000..98b5e27a2 Binary files /dev/null and b/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar differ diff --git a/repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.jar b/repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.jar new file mode 100644 index 000000000..825bd2573 Binary files /dev/null and b/repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.jar differ diff --git a/repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.pom b/repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.pom new file mode 100644 index 000000000..b9a480933 --- /dev/null +++ b/repository/iaik/iaik_jce_full/5.01/iaik_jce_full-5.01.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_jce_full + 5.01 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_jce_full/5.101/iaik_jce_full-5.101.jar b/repository/iaik/iaik_jce_full/5.101/iaik_jce_full-5.101.jar new file mode 100644 index 000000000..fd0457332 Binary files /dev/null and b/repository/iaik/iaik_jce_full/5.101/iaik_jce_full-5.101.jar differ diff --git a/repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.jar b/repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.jar new file mode 100644 index 000000000..0e6ca6fce Binary files /dev/null and b/repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.jar differ diff --git a/repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.pom b/repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.pom new file mode 100644 index 000000000..ab1026dac --- /dev/null +++ b/repository/iaik/iaik_jce_full_signed/3.16/iaik_jce_full_signed-3.16.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + iaik_jce_full_signed + 3.16 + POM was created from install:install-file + \ No newline at end of file diff --git a/repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.jar b/repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.jar new file mode 100644 index 000000000..d55a1d279 Binary files /dev/null and b/repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.jar differ diff --git a/repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.pom b/repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.pom new file mode 100644 index 000000000..e6909b2ac --- /dev/null +++ b/repository/iaik/iaik_jce_me4se/3.04/iaik_jce_me4se-3.04.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + iaik_jce_me4se + 3.04 + POM was created from install:install-file + \ No newline at end of file diff --git a/repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.jar b/repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.jar new file mode 100644 index 000000000..15b320422 Binary files /dev/null and b/repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.jar differ diff --git a/repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.jar b/repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.jar new file mode 100644 index 000000000..e911f1f15 Binary files /dev/null and b/repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.jar differ diff --git a/repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.pom b/repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.pom new file mode 100644 index 000000000..dd50132a3 --- /dev/null +++ b/repository/iaik/iaik_pki/1.0-MOCCA/iaik_pki-1.0-MOCCA.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + iaik_pki + 1.0-MOCCA + POM was created from install:install-file + diff --git a/repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.jar b/repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.jar new file mode 100644 index 000000000..43c882876 Binary files /dev/null and b/repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.jar differ diff --git a/repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.jar b/repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.jar new file mode 100644 index 000000000..2a875c833 Binary files /dev/null and b/repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.jar differ diff --git a/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.jar b/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.jar new file mode 100644 index 000000000..cc461be04 Binary files /dev/null and b/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.jar differ diff --git a/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.pom b/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.pom new file mode 100644 index 000000000..e7fe82da2 --- /dev/null +++ b/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/iaik_tsl-0.0.1-SNAPSHOT.pom @@ -0,0 +1,135 @@ + + 4.0.0 + iaik + iaik_tsl + jar + 0.0.1-SNAPSHOT + TSL_library + + + + + true + src/main/resources + + + + ${project.artifactId} + + + + org.apache.maven.plugins + maven-enforcer-plugin + + + enforce-versions + + enforce + + + + + 1.5 + + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + + + + 1.5 + 1.5 + + + + + + + + + iaik + iaik_xsect_eval + 1.17 + + + iaik + iaik_ecc_signed + 2.19 + + + iaik + iaik_jce_eval_signed + 3.181 + + + iaik + iaik_pki_module + 1.0 + + + iaik + iaik_javax_crypto + 1.0 + + + + iaik + iaik_jsse + 4.4 + + + iaik + iaik_ssl + 4.4 + + + iaik + w3c_http + 1.0 + + + org.xerial + sqlite-jdbc + 3.7.2 + + + javax.xml.bind + jaxb-api + 2.2.6 + + + com.sun.xml.bind + jaxb-impl + 2.2.6 + + + javax.activation + activation + 1.1.1 + + + stax + stax-api + 1.0.1 + + + xerces + xercesImpl + 2.7.1 + + + + + \ No newline at end of file diff --git a/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/maven-metadata-local.xml b/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/maven-metadata-local.xml new file mode 100644 index 000000000..64ac0d4ca --- /dev/null +++ b/repository/iaik/iaik_tsl/0.0.1-SNAPSHOT/maven-metadata-local.xml @@ -0,0 +1,24 @@ + + + iaik + iaik_tsl + 0.0.1-SNAPSHOT + + + true + + 20130308070150 + + + jar + 0.0.1-SNAPSHOT + 20130308070150 + + + pom + 0.0.1-SNAPSHOT + 20130308070150 + + + + diff --git a/repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.jar b/repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.jar new file mode 100644 index 000000000..7a05fa705 Binary files /dev/null and b/repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.jar differ diff --git a/repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.pom b/repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.pom new file mode 100644 index 000000000..aebc1b74e --- /dev/null +++ b/repository/iaik/iaik_tsl/0.5/iaik_tsl-0.5.pom @@ -0,0 +1,250 @@ + + 4.0.0 + iaik + iaik_tsl + jar + 0.5 + TSL_library + + + UTF-8 + UTF-8 + ${project.build.directory}/endorsed + + + + + + + true + src/main/resources + + + + ${project.artifactId} + + + + maven-dependency-plugin + + + copy-dependencies + validate + + copy-dependencies + + + ${endorsed.dir} + true + jaxb-api,jaxb-impl + + + + + + + maven-resources-plugin + 2.5 + + UTF-8 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + + + ${endorsed.dir} + + ${java.version} + ${java.version} + true + ${java.version} + ${project.build.sourceEncoding} + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.2 + + + enforce-versions + + enforce + + + + + 1.5 + + + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.maven.plugins + maven-dependency-plugin + [2.0,) + + copy-dependencies + + + + + + + + + + + + + + + + + profile-for-jdk1.6 + + false + [1.6,) + + + 1.6 + jdk${java.version} + + + ${project.artifactId}-${project.version}-${envClassifier} + + + + + javax.xml.bind + jaxb-api + 2.2.6 + + + com.sun.xml.bind + jaxb-impl + 2.2.6 + + + + + + profile-for-jdk1.5 + + true + (,1.5] + + + 1.5 + jdk${java.version} + + + ${project.artifactId}-${project.version}-${envClassifier} + + + + + javax.xml.bind + jaxb-api + 2.2.4 + + + com.sun.xml.bind + jaxb-impl + 2.2.4-1 + + + + + + + + + iaik + iaik_xsect_eval + 1.1709142 + + + iaik + iaik_ecc_signed + 2.19 + + + iaik + iaik_jce_eval_signed + 3.181 + + + iaik + iaik_pki_module + 1.0 + + + + + iaik + iaik_jsse + 4.4 + + + iaik + iaik_ssl + 4.4 + + + iaik + w3c_http + 1.0 + + + org.xerial + sqlite-jdbc + 3.7.2 + + + + + javax.activation + activation + 1.1.1 + + + stax + stax-api + 1.0.1 + + + xerces + xercesImpl + 2.7.1 + + + + \ No newline at end of file diff --git a/repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar b/repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar new file mode 100644 index 000000000..1105cf999 Binary files /dev/null and b/repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar differ diff --git a/repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom b/repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom new file mode 100644 index 000000000..3214e85ee --- /dev/null +++ b/repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom @@ -0,0 +1,251 @@ + + 4.0.0 + iaik + iaik_tsl + jar + 1.0 + TSL_library + + + UTF-8 + UTF-8 + ${project.build.directory}/endorsed + + + + + + + true + src/main/resources + + + + ${project.artifactId} + + + + maven-dependency-plugin + + + copy-dependencies + validate + + copy-dependencies + + + ${endorsed.dir} + true + jaxb-api,jaxb-impl + + + + + + + maven-resources-plugin + 2.5 + + UTF-8 + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + + + ${endorsed.dir} + + ${java.version} + ${java.version} + true + ${java.version} + ${project.build.sourceEncoding} + + + + + org.apache.maven.plugins + maven-enforcer-plugin + 1.2 + + + enforce-versions + + enforce + + + + + 1.5 + + + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + org.apache.maven.plugins + maven-dependency-plugin + [2.0,) + + copy-dependencies + + + + + + + + + + + + + + + + + profile-for-jdk1.6 + + false + [1.6,) + + + 1.6 + jdk${java.version} + + + ${project.artifactId}-${project.version}-${envClassifier} + + + + + javax.xml.bind + jaxb-api + 2.2.6 + + + com.sun.xml.bind + jaxb-impl + 2.2.6 + + + + + + profile-for-jdk1.5 + + true + (,1.5] + + + 1.5 + jdk${java.version} + + + ${project.artifactId}-${project.version}-${envClassifier} + + + + + javax.xml.bind + jaxb-api + 2.2.4 + + + com.sun.xml.bind + jaxb-impl + 2.2.4-1 + + + + + + + + + iaik + iaik_xsect + 1.1709142 + + + iaik + iaik_ecc_signed + 2.19 + provided + + + iaik + iaik_jce_eval_signed + 3.181 + + + iaik + iaik_pki_module + 1.0 + + + + + iaik + iaik_jsse + 4.4 + + + iaik + iaik_ssl + 4.4 + + + iaik + w3c_http + 1.0 + + + org.xerial + sqlite-jdbc + 3.7.2 + + + + + javax.activation + activation + 1.1.1 + + + stax + stax-api + 1.0.1 + + + xerces + xercesImpl + 2.7.1 + + + + \ No newline at end of file diff --git a/repository/iaik/iaik_tsl/maven-metadata-local.xml b/repository/iaik/iaik_tsl/maven-metadata-local.xml new file mode 100644 index 000000000..9b36d1a39 --- /dev/null +++ b/repository/iaik/iaik_tsl/maven-metadata-local.xml @@ -0,0 +1,14 @@ + + + iaik + iaik_tsl + + 1.0 + + 0.0.1-SNAPSHOT + 0.5 + 1.0 + + 20140130172750 + + diff --git a/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar b/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar new file mode 100644 index 000000000..1bc0cde7c Binary files /dev/null and b/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar differ diff --git a/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar new file mode 100644 index 000000000..143721433 Binary files /dev/null and b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar differ diff --git a/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar.sha1 b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar.sha1 new file mode 100644 index 000000000..d94a0d2e1 --- /dev/null +++ b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.jar.sha1 @@ -0,0 +1 @@ +a7229772fae682b3e0fb36c1ca99c7863b67183d \ No newline at end of file diff --git a/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom new file mode 100644 index 000000000..53a1a1c69 --- /dev/null +++ b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_xsect + 1.17 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom.sha1 b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom.sha1 new file mode 100644 index 000000000..ae1a98d0d --- /dev/null +++ b/repository/iaik/iaik_xsect/1.17/iaik_xsect-1.17.pom.sha1 @@ -0,0 +1 @@ +89ab4d09c9e7c6c635333fdd4bba4fe83eda17ed \ No newline at end of file diff --git a/repository/iaik/iaik_xsect/1.1709142/iaik_xsect-1.1709142.jar b/repository/iaik/iaik_xsect/1.1709142/iaik_xsect-1.1709142.jar new file mode 100644 index 000000000..96732584e Binary files /dev/null and b/repository/iaik/iaik_xsect/1.1709142/iaik_xsect-1.1709142.jar differ diff --git a/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar new file mode 100644 index 000000000..75cc08ac9 Binary files /dev/null and b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar differ diff --git a/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar.sha1 b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar.sha1 new file mode 100644 index 000000000..9342639d0 --- /dev/null +++ b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.jar.sha1 @@ -0,0 +1 @@ +0f4ae4f842abc37209af659998de0d475401b47c diff --git a/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom new file mode 100644 index 000000000..af1ce91ff --- /dev/null +++ b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom @@ -0,0 +1,32 @@ + + 4.0.0 + iaik + iaik_xsect_eval + 1.11build48 + + + iaik + iaik_jce_eval_signed + 3.142 + true + + + xalan + xalan + 2.7.0 + true + + + xerces + xercesImpl + 2.7.1 + true + + + xml-apis + xml-apis + 1.0.b2 + true + + + diff --git a/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom.sha1 b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom.sha1 new file mode 100644 index 000000000..1d18f50a4 --- /dev/null +++ b/repository/iaik/iaik_xsect_eval/1.11build48/iaik_xsect_eval-1.11build48.pom.sha1 @@ -0,0 +1 @@ +2f1a7377b98d831ae4d854f3158221e142d95d77 diff --git a/repository/iaik/iaik_xsect_eval/1.17/iaik_xsect_eval-1.17.jar b/repository/iaik/iaik_xsect_eval/1.17/iaik_xsect_eval-1.17.jar new file mode 100644 index 000000000..d8ddf1925 Binary files /dev/null and b/repository/iaik/iaik_xsect_eval/1.17/iaik_xsect_eval-1.17.jar differ diff --git a/repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.jar b/repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.jar new file mode 100644 index 000000000..420d8c2ff Binary files /dev/null and b/repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.jar differ diff --git a/repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.jar b/repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.jar new file mode 100644 index 000000000..bda9f05bd Binary files /dev/null and b/repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.jar differ diff --git a/repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.pom b/repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.pom new file mode 100644 index 000000000..49a09d2df --- /dev/null +++ b/repository/iaik/ixsil/1.2.2.4/ixsil-1.2.2.4.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + ixsil + IAIK IXSIL + 1.2.2.4 + \ No newline at end of file diff --git a/repository/iaik/jce/3.18/jce-3.18.jar b/repository/iaik/jce/3.18/jce-3.18.jar new file mode 100644 index 000000000..4a0aa89c7 Binary files /dev/null and b/repository/iaik/jce/3.18/jce-3.18.jar differ diff --git a/repository/iaik/jce/3.18/jce-3.18.pom b/repository/iaik/jce/3.18/jce-3.18.pom new file mode 100644 index 000000000..621aaca48 --- /dev/null +++ b/repository/iaik/jce/3.18/jce-3.18.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + jce + IAIK JCE + 3.18 + \ No newline at end of file diff --git a/repository/iaik/moa/1.28/m2e-lastUpdated.properties b/repository/iaik/moa/1.28/m2e-lastUpdated.properties new file mode 100644 index 000000000..325865860 --- /dev/null +++ b/repository/iaik/moa/1.28/m2e-lastUpdated.properties @@ -0,0 +1,10 @@ +#Wed Sep 04 11:22:13 CEST 2013 +iaikInternal|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/internal|sources=1378286533334 +central|http\://repo1.maven.org/maven2/|sources=1378286533334 +MOA|file\://D\:\\Projekte\\svn\\moa-id\\moa-idspss\\id\\server\\idserverlib/../../../repository|sources=1378286533334 +shibboleth.internet2.edu|https\://build.shibboleth.net/nexus/content/groups/public/|sources=1378286533334 +iaik3rd\ Party|tlenz|http\://nexus/nexus/content/repositories/thirdparty|sources=1378286533334 +iaikPublic|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/public|sources=1378286533334 +java.net-Public|https\://maven.java.net/content/groups/public/|sources=1378286533334 +hyberjaxb|http\://repository.highsource.org/maven2/releases/|sources=1378286533334 +iaikLibs|tlenz|http\://nexus/nexus/content/repositories/iaik|sources=1378286533334 diff --git a/repository/iaik/moa/1.28/moa-1.28.jar b/repository/iaik/moa/1.28/moa-1.28.jar new file mode 100644 index 000000000..15d117873 Binary files /dev/null and b/repository/iaik/moa/1.28/moa-1.28.jar differ diff --git a/repository/iaik/moa/1.28/moa-1.28.pom b/repository/iaik/moa/1.28/moa-1.28.pom new file mode 100644 index 000000000..4f974d207 --- /dev/null +++ b/repository/iaik/moa/1.28/moa-1.28.pom @@ -0,0 +1,7 @@ + + 4.0.0 + iaik + moa + IAIK MOA + 1.28 + \ No newline at end of file diff --git a/repository/iaik/moa_common/2006-03-20/moa_common-2006-03-20.jar b/repository/iaik/moa_common/2006-03-20/moa_common-2006-03-20.jar new file mode 100644 index 000000000..cb13672ac Binary files /dev/null and b/repository/iaik/moa_common/2006-03-20/moa_common-2006-03-20.jar differ diff --git a/repository/iaik/prod/iaik_X509TrustManager/0.3/m2e-lastUpdated.properties b/repository/iaik/prod/iaik_X509TrustManager/0.3/m2e-lastUpdated.properties new file mode 100644 index 000000000..c2379afa6 --- /dev/null +++ b/repository/iaik/prod/iaik_X509TrustManager/0.3/m2e-lastUpdated.properties @@ -0,0 +1,10 @@ +#Wed Sep 04 10:38:34 CEST 2013 +iaikInternal|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/internal|sources=1378283914153 +central|http\://repo1.maven.org/maven2/|sources=1378283914153 +MOA|file\://D\:\\Projekte\\svn\\moa-id\\moa-idspss\\id\\server\\idserverlib/../../../repository|sources=1378283914153 +shibboleth.internet2.edu|https\://build.shibboleth.net/nexus/content/groups/public/|sources=1378283914153 +iaik3rd\ Party|tlenz|http\://nexus/nexus/content/repositories/thirdparty|sources=1378283914153 +iaikPublic|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/public|sources=1378283914153 +java.net-Public|https\://maven.java.net/content/groups/public/|sources=1378283914153 +hyberjaxb|http\://repository.highsource.org/maven2/releases/|sources=1378283914153 +iaikLibs|tlenz|http\://nexus/nexus/content/repositories/iaik|sources=1378283914153 diff --git a/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar new file mode 100644 index 000000000..91ad9505d Binary files /dev/null and b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar differ diff --git a/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.md5 b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.md5 new file mode 100644 index 000000000..9ca556e54 --- /dev/null +++ b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.md5 @@ -0,0 +1 @@ +89895bd5cf39659b32a5eaa23ab7a241 \ No newline at end of file diff --git a/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.sha1 b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.sha1 new file mode 100644 index 000000000..29d414fd9 --- /dev/null +++ b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.jar.sha1 @@ -0,0 +1 @@ +7796f42059f77249baa7cfe75326a7f5f1742821 \ No newline at end of file diff --git a/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom new file mode 100644 index 000000000..29b57342a --- /dev/null +++ b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom @@ -0,0 +1,6 @@ + + 4.0.0 + iaik.prod + iaik_cms + 4.01_MOA_SV + \ No newline at end of file diff --git a/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.md5 b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.md5 new file mode 100644 index 000000000..8ed1e29bd --- /dev/null +++ b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.md5 @@ -0,0 +1 @@ +b2746e061aa5cf7c05b1504d8d80c0db \ No newline at end of file diff --git a/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.sha1 b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.sha1 new file mode 100644 index 000000000..5a2f4a10e --- /dev/null +++ b/repository/iaik/prod/iaik_cms/4.01_MOA_SV/iaik_cms-4.01_MOA_SV.pom.sha1 @@ -0,0 +1 @@ +5b4a31ca81d6880390d2e6a3f9131410dad9cfbb \ No newline at end of file diff --git a/repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar b/repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar new file mode 100644 index 000000000..abe38aea9 Binary files /dev/null and b/repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.jar differ diff --git a/repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom b/repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom new file mode 100644 index 000000000..ad3b0b202 --- /dev/null +++ b/repository/iaik/prod/iaik_ecc_signed/2.19/iaik_ecc_signed-2.19.pom @@ -0,0 +1,6 @@ + + 4.0.0 + iaik.prod + iaik_ecc_signed + 2.19 + diff --git a/repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.jar.sha1 b/repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.jar.sha1 new file mode 100644 index 000000000..0248d3cbe --- /dev/null +++ b/repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.jar.sha1 @@ -0,0 +1 @@ +4a893ba4503786d33bbca85b82d16927adc6d6a6 \ No newline at end of file diff --git a/repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.pom.sha1 b/repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.pom.sha1 new file mode 100644 index 000000000..33eae7f2e --- /dev/null +++ b/repository/iaik/prod/iaik_jce_full/4.0_MOA/iaik_jce_full-4.0_MOA.pom.sha1 @@ -0,0 +1 @@ +567fb4bf4a266d5b4eafbbc582972dbc2fad7195 \ No newline at end of file diff --git a/repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.jar.lastUpdated b/repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.jar.lastUpdated deleted file mode 100644 index 42ff556c7..000000000 --- a/repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.jar.lastUpdated +++ /dev/null @@ -1,22 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed May 15 13:18:02 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.lastUpdated=1368616682476 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.lastUpdated=1368616682207 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1368616681300 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.lastUpdated=1368616681996 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1368616682060 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1368616682416 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.lastUpdated=1368616682584 -http\://repo.maven.apache.org/maven2/.lastUpdated=1368616681623 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\tools/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1368616682294 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\tools/../../../repository/.lastUpdated=1368616681780 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.error= diff --git a/repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.pom.lastUpdated b/repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.pom.lastUpdated deleted file mode 100644 index 65ee40f75..000000000 --- a/repository/iaik/prod/iaik_jce_full/5.101/iaik_jce_full-5.101.pom.lastUpdated +++ /dev/null @@ -1,12 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed May 15 13:18:07 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.lastUpdated=1368616681271 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1368616685249 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1368616687679 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1368616680663 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1368616687203 diff --git a/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar new file mode 100644 index 000000000..bacb70edc Binary files /dev/null and b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar differ diff --git a/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar.sha1 b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar.sha1 new file mode 100644 index 000000000..0248d3cbe --- /dev/null +++ b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.jar.sha1 @@ -0,0 +1 @@ +4a893ba4503786d33bbca85b82d16927adc6d6a6 \ No newline at end of file diff --git a/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom new file mode 100644 index 000000000..4e0b27a6c --- /dev/null +++ b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom @@ -0,0 +1,6 @@ + + 4.0.0 + iaik.prod + iaik_jce_full + 4.0_MOA + \ No newline at end of file diff --git a/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom.sha1 b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom.sha1 new file mode 100644 index 000000000..33eae7f2e --- /dev/null +++ b/repository/iaik/prod/iaik_jce_full/iaik_jce_full-4.0_MOA.pom.sha1 @@ -0,0 +1 @@ +567fb4bf4a266d5b4eafbbc582972dbc2fad7195 \ No newline at end of file diff --git a/repository/iaik/prod/iaik_moa/1.32/m2e-lastUpdated.properties b/repository/iaik/prod/iaik_moa/1.32/m2e-lastUpdated.properties new file mode 100644 index 000000000..0bc0b0a6c --- /dev/null +++ b/repository/iaik/prod/iaik_moa/1.32/m2e-lastUpdated.properties @@ -0,0 +1,10 @@ +#Thu Jul 18 07:34:24 CEST 2013 +iaikInternal|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/internal|sources=1374125664765 +central|http\://repo1.maven.org/maven2/|sources=1374125664765 +MOA|file\://D\:\\Projekte\\svn\\moa-id\\moa-idspss\\common/../repository|sources=1374125664765 +shibboleth.internet2.edu|https\://build.shibboleth.net/nexus/content/groups/public/|sources=1374125664765 +iaik3rd\ Party|tlenz|http\://nexus/nexus/content/repositories/thirdparty|sources=1374125664765 +iaikPublic|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/public|sources=1374125664765 +java.net-Public|https\://maven.java.net/content/groups/public/|sources=1374125664765 +hyberjaxb|http\://repository.highsource.org/maven2/releases/|sources=1374125664765 +iaikLibs|tlenz|http\://nexus/nexus/content/repositories/iaik|sources=1374125664765 diff --git a/repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.jar.lastUpdated b/repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.jar.lastUpdated deleted file mode 100644 index 39508d157..000000000 --- a/repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.jar.lastUpdated +++ /dev/null @@ -1,22 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed May 15 13:18:18 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.lastUpdated=1368616698028 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.lastUpdated=1368616697758 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1368616696933 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.lastUpdated=1368616697582 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1368616697635 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1368616697964 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.lastUpdated=1368616698288 -http\://repo.maven.apache.org/maven2/.lastUpdated=1368616697395 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\tools/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1368616697883 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\tools/../../../repository/.lastUpdated=1368616697505 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.error= diff --git a/repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.pom.lastUpdated b/repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.pom.lastUpdated deleted file mode 100644 index 728b1a824..000000000 --- a/repository/iaik/prod/iaik_moa/1.5/iaik_moa-1.5.pom.lastUpdated +++ /dev/null @@ -1,12 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed May 15 13:18:20 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.lastUpdated=1368616696896 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1368616698745 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1368616700109 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1368616696561 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1368616699566 diff --git a/repository/iaik/prod/iaik_moa/1.5/m2e-lastUpdated.properties b/repository/iaik/prod/iaik_moa/1.5/m2e-lastUpdated.properties new file mode 100644 index 000000000..1c0e7bd32 --- /dev/null +++ b/repository/iaik/prod/iaik_moa/1.5/m2e-lastUpdated.properties @@ -0,0 +1,9 @@ +#Wed Sep 04 11:14:45 CEST 2013 +java.net-Public|https\://maven.java.net/content/groups/public/|sources=1378286085859 +iaikLibs|tlenz|http\://nexus/nexus/content/repositories/iaik|sources=1378286085859 +iaik3rd\ Party|tlenz|http\://nexus/nexus/content/repositories/thirdparty|sources=1378286085859 +iaikPublic|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/public|sources=1378286085859 +shibboleth.internet2.edu|https\://build.shibboleth.net/nexus/content/groups/public/|sources=1378286085859 +central|http\://repo1.maven.org/maven2/|sources=1378286085859 +hyberjaxb|http\://repository.highsource.org/maven2/releases/|sources=1378286085859 +iaikInternal|tlenz|http\://nexus.iaik.tugraz.at/nexus/content/groups/internal|sources=1378286085859 diff --git a/repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.jar.lastUpdated b/repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.jar.lastUpdated deleted file mode 100644 index ab7af62d9..000000000 --- a/repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.jar.lastUpdated +++ /dev/null @@ -1,3 +0,0 @@ -#Last modified on: Thu Dec 27 14:05:38 CET 2012 -#Thu Dec 27 14:05:38 CET 2012 -MOA=1356613538568 diff --git a/repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.pom.lastUpdated b/repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.pom.lastUpdated deleted file mode 100644 index b50698d8c..000000000 --- a/repository/iaik/prod/iaik_tsl/0.0.2-SNAPSHOT/iaik_tsl-0.0.2-SNAPSHOT.pom.lastUpdated +++ /dev/null @@ -1,3 +0,0 @@ -#Last modified on: Thu Dec 27 14:05:37 CET 2012 -#Thu Dec 27 14:05:37 CET 2012 -MOA=1356613537915 diff --git a/repository/iaik/w3c_http/1.0/w3c_http-1.0.jar b/repository/iaik/w3c_http/1.0/w3c_http-1.0.jar new file mode 100644 index 000000000..659da32e8 Binary files /dev/null and b/repository/iaik/w3c_http/1.0/w3c_http-1.0.jar differ diff --git a/repository/iaik/xsect/1.02/xsect-1.02.jar b/repository/iaik/xsect/1.02/xsect-1.02.jar new file mode 100644 index 000000000..9b2e4cc41 Binary files /dev/null and b/repository/iaik/xsect/1.02/xsect-1.02.jar differ diff --git a/repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.jar.lastUpdated b/repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.jar.lastUpdated deleted file mode 100644 index 78b5176b5..000000000 --- a/repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.jar.lastUpdated +++ /dev/null @@ -1,3 +0,0 @@ -#Last modified on: Mon Dec 17 20:58:30 CET 2012 -#Mon Dec 17 20:58:30 CET 2012 -MOA=1355774310289 diff --git a/repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.pom.lastUpdated b/repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.pom.lastUpdated deleted file mode 100644 index b4f47fc4d..000000000 --- a/repository/org/xerial/sqlite-jdbc/3.7.8-SNAPSHOT/sqlite-jdbc-3.7.8-SNAPSHOT.pom.lastUpdated +++ /dev/null @@ -1,3 +0,0 @@ -#Last modified on: Thu Dec 27 12:24:22 CET 2012 -#Thu Dec 27 12:24:22 CET 2012 -MOA=1356607462442 diff --git a/repository/xalan-bin-dist/serializer/2.10.0/serializer-2.10.0-sources.jar.lastUpdated b/repository/xalan-bin-dist/serializer/2.10.0/serializer-2.10.0-sources.jar.lastUpdated deleted file mode 100644 index 450824e7b..000000000 --- a/repository/xalan-bin-dist/serializer/2.10.0/serializer-2.10.0-sources.jar.lastUpdated +++ /dev/null @@ -1,8 +0,0 @@ -#Last modified on: Tue Jun 19 09:58:36 CEST 2012 -#Tue Jun 19 09:58:36 CEST 2012 -file\://E\:\\workspace_moa_stork_integration\\moa-idspss\\id\\server\\auth/../../../repository=1340092716254 -file\://E\:\\workspace_moa_stork_integration\\moa-idspss\\id\\server\\idserverlib/../../../repository=1340024044491 -file\://E\:\\workspace_moa_stork_integration\\moa-idspss\\id\\server\\stork-saml-engine/../../repository=1339605327080 --1137991424@https\://vidp.openlimit.com\:8120/artifactory/libs-snapshot=1340024044486 --1137991424@https\://vidp.openlimit.com\:8120/artifactory/libs-release=1340024043644 -http\://repo1.maven.org/maven2=1340092716398 diff --git a/repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.jar.lastUpdated b/repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.jar.lastUpdated deleted file mode 100644 index 72e5744b0..000000000 --- a/repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.jar.lastUpdated +++ /dev/null @@ -1,20 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed Apr 17 12:01:34 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.lastUpdated=1366192894894 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.lastUpdated=1366192894629 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1366192893795 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.lastUpdated=1366192894406 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1366192894480 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1366192894830 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.lastUpdated=1366192894987 -http\://repo.maven.apache.org/maven2/.lastUpdated=1366192894218 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1366192894710 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.error= diff --git a/repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.pom.lastUpdated b/repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.pom.lastUpdated deleted file mode 100644 index e04390820..000000000 --- a/repository/xalan-bin-dist/serializer/2.7.1/serializer-2.7.1.pom.lastUpdated +++ /dev/null @@ -1,12 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed Apr 17 12:01:37 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.lastUpdated=1366192893730 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1366192895946 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1366192897001 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1366192893425 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1366192896653 diff --git a/repository/xalan-bin-dist/xml-apis/2.10.0/xml-apis-2.10.0-sources.jar.lastUpdated b/repository/xalan-bin-dist/xml-apis/2.10.0/xml-apis-2.10.0-sources.jar.lastUpdated deleted file mode 100644 index 04fd7a1ab..000000000 --- a/repository/xalan-bin-dist/xml-apis/2.10.0/xml-apis-2.10.0-sources.jar.lastUpdated +++ /dev/null @@ -1,8 +0,0 @@ -#Last modified on: Tue Jun 19 09:58:36 CEST 2012 -#Tue Jun 19 09:58:36 CEST 2012 -file\://E\:\\workspace_moa_stork_integration\\moa-idspss\\id\\server\\auth/../../../repository=1340092715933 -file\://E\:\\workspace_moa_stork_integration\\moa-idspss\\id\\server\\idserverlib/../../../repository=1340024039340 -file\://E\:\\workspace_moa_stork_integration\\moa-idspss\\id\\server\\stork-saml-engine/../../repository=1339605326450 --1137991424@https\://vidp.openlimit.com\:8120/artifactory/libs-snapshot=1340024039336 --1137991424@https\://vidp.openlimit.com\:8120/artifactory/libs-release=1340024037229 -http\://repo1.maven.org/maven2=1340092716084 diff --git a/repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.jar.lastUpdated b/repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.jar.lastUpdated deleted file mode 100644 index e61976db2..000000000 --- a/repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.jar.lastUpdated +++ /dev/null @@ -1,20 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed Apr 17 12:01:34 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.lastUpdated=1366192894892 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.lastUpdated=1366192894628 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1366192893794 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.lastUpdated=1366192894405 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1366192894479 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1366192894829 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.lastUpdated=1366192894985 -http\://repo.maven.apache.org/maven2/.lastUpdated=1366192894217 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverlib/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1366192894709 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\idserverlib/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\api/../../../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\handbook\\clients\\webservice/../../../../../repository/.error= diff --git a/repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.pom.lastUpdated b/repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.pom.lastUpdated deleted file mode 100644 index b90a46001..000000000 --- a/repository/xalan-bin-dist/xml-apis/2.7.1/xml-apis-2.7.1.pom.lastUpdated +++ /dev/null @@ -1,12 +0,0 @@ -#NOTE: This is an internal implementation file, its format can be changed without prior notice. -#Wed Apr 17 12:01:36 CEST 2013 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.lastUpdated=1366192893413 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.lastUpdated=1366192895941 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\spss\\server\\serverws/../../../repository/.lastUpdated=1366192896997 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.error= -http\://repo.maven.apache.org/maven2/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\common/../repository/.lastUpdated=1366192893124 -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\proxy/../../../repository/.error= -file\://C\:\\eclipse_workspaces\\MOA_Git01\\moa-idspss\\id\\server\\auth/../../../repository/.lastUpdated=1366192896649 -- cgit v1.2.3 From 615ebd9ea9abddb951a6350b2761c06d376f5f7b Mon Sep 17 00:00:00 2001 From: Bojan Suzic Date: Wed, 5 Feb 2014 12:40:02 +0100 Subject: add new deps in repos --- .../at/gv/util/egovutils/1.0.4/egovutils-1.0.4.jar | Bin 0 -> 2616649 bytes .../at/gv/util/egovutils/1.0.4/egovutils-1.0.4.pom | 80 +++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.jar create mode 100644 repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.pom (limited to 'repository') diff --git a/repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.jar b/repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.jar new file mode 100644 index 000000000..1fb2b7c22 Binary files /dev/null and b/repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.jar differ diff --git a/repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.pom b/repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.pom new file mode 100644 index 000000000..4a46fcee4 --- /dev/null +++ b/repository/at/gv/util/egovutils/1.0.4/egovutils-1.0.4.pom @@ -0,0 +1,80 @@ + + + 4.0.0 + at.gv.util + egovutils + 1.0.4 + zuseutil + http://maven.apache.org + + UTF-8 + + + + xerces + xercesImpl + 2.11.0 + + + xalan + xalan + 2.7.1 + + + com.sun + webservices-tools + 2.0.1 + + + com.sun + webservices-rt + 2.0.1 + + + commons-validator + commons-validator + 1.3.1 + + + bouncycastle + bcprov-jdk16 + 140 + + + org.slf4j + slf4j-api + 1.6.1 + + + org.slf4j + slf4j-log4j12 + 1.6.1 + + + javax.servlet + servlet-api + 2.5 + provided + + + commons-codec + commons-codec + 1.4 + + + commons-lang + commons-lang + 2.5 + jar + compile + + + commons-httpclient + commons-httpclient + 3.1 + + + + -- cgit v1.2.3 From cd0887a43b0b4350e736433c2b513901a2151601 Mon Sep 17 00:00:00 2001 From: Bojan Suzic Date: Tue, 4 Mar 2014 17:51:06 +0100 Subject: after merge, having problem --- id/ConfigWebTool/ConfigurationInterface.iml | 20 +- id/oa/moa-id-oa.iml | 4 +- id/server/auth/moa-id-auth.iml | 19 +- id/server/auth/pom.xml | 9 +- id/server/idserverlib/moa-id-lib.iml | 25 +- .../moa/id/auth/AuthenticationServer.java | 2 +- .../id/protocols/stork2/AttributeCollector.java | 9 +- id/server/moa-id-commons/moa-id-commons.iml | 7 +- id/server/moa-id-commons/pom.xml | 491 +++++++++++---------- id/server/proxy/moa-id-proxy.iml | 17 +- .../oasis-dss-api-1.0.0-SNAPSHOT.jar | Bin 180095 -> 282629 bytes .../clients/api/moa-spss-handbook-apiClient.iml | 4 +- .../moa-spss-handbook-webserviceClient.iml | 4 +- spss/server/serverlib/moa-spss-lib.iml | 4 +- spss/server/serverws/moa-spss-ws.iml | 4 +- 15 files changed, 308 insertions(+), 311 deletions(-) (limited to 'repository') diff --git a/id/ConfigWebTool/ConfigurationInterface.iml b/id/ConfigWebTool/ConfigurationInterface.iml index 20f45337e..43790145b 100644 --- a/id/ConfigWebTool/ConfigurationInterface.iml +++ b/id/ConfigWebTool/ConfigurationInterface.iml @@ -73,8 +73,6 @@ - - @@ -121,29 +119,20 @@ + - - - - - - - - - - - - + + @@ -168,6 +157,8 @@ + + @@ -186,6 +177,7 @@ + diff --git a/id/oa/moa-id-oa.iml b/id/oa/moa-id-oa.iml index 6d9905e25..0b7bf00de 100644 --- a/id/oa/moa-id-oa.iml +++ b/id/oa/moa-id-oa.iml @@ -13,8 +13,8 @@ - - + + diff --git a/id/server/auth/moa-id-auth.iml b/id/server/auth/moa-id-auth.iml index f61dfa171..b8b4208b8 100644 --- a/id/server/auth/moa-id-auth.iml +++ b/id/server/auth/moa-id-auth.iml @@ -14,8 +14,8 @@ - - + + @@ -96,19 +96,10 @@ - + - - - - - - - - - - + @@ -134,12 +125,12 @@ - + diff --git a/id/server/auth/pom.xml b/id/server/auth/pom.xml index 987ae1951..c17722df0 100644 --- a/id/server/auth/pom.xml +++ b/id/server/auth/pom.xml @@ -79,8 +79,13 @@ MOA.id.server moa-id-lib - - + + eu.stork + oasis-dss-api + 1.0.0-SNAPSHOT + + + iaik.prod iaik_jce_full diff --git a/id/server/idserverlib/moa-id-lib.iml b/id/server/idserverlib/moa-id-lib.iml index cf1b34b4b..d995f23af 100644 --- a/id/server/idserverlib/moa-id-lib.iml +++ b/id/server/idserverlib/moa-id-lib.iml @@ -1,8 +1,8 @@ - - + + @@ -43,20 +43,7 @@ - - - - - - - - - - - - - - + @@ -88,12 +75,12 @@ - + @@ -111,6 +98,7 @@ + @@ -120,6 +108,7 @@ + @@ -145,6 +134,8 @@ + + diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java index ce5aa15c3..6f6d9611a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java @@ -125,7 +125,7 @@ import at.gv.util.xsd.srzgw.MISType; import at.gv.util.xsd.srzgw.MISType.Filters; import eu.stork.oasisdss.api.AdditionalProfiles; import eu.stork.oasisdss.api.ApiUtils; -import eu.stork.oasisdss.api.ApiUtilsException; +import eu.stork.oasisdss.api.exceptions.ApiUtilsException; import eu.stork.oasisdss.api.Profiles; import eu.stork.oasisdss.api.QualityLevels; import eu.stork.oasisdss.api.SignatureTypes; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java index 84831a7b5..10cdcba6c 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/protocols/stork2/AttributeCollector.java @@ -62,7 +62,12 @@ public class AttributeCollector implements IAction { this.httpResp = httpResp; - // find the attribute provider plugin that can handle the response + // read configuration parameters of OA + OAAuthParameter oaParam = AuthConfigurationProvider.getInstance().getOnlineApplicationParameter(moasession.getPublicOAURLPrefix()); + if (oaParam == null) + throw new AuthenticationException("stork.12", new Object[]{moasession.getPublicOAURLPrefix()}); + + // find the attribute provider plugin that can handle the response IPersonalAttributeList newAttributes = null; for (AttributeProvider current : AttributeProviderFactory.getConfiguredPlugins(oaParam.getStorkAPs())) try { @@ -167,7 +172,7 @@ public class AttributeCollector implements IAction { } catch (Exception e1) { // TODO should we return the response as is to the PEPS? Logger.error("Error putting incomplete Stork response into temporary storage", e); - throw new MOAIDException("stork.11", An Introduction to Knowledge Engineeringnull); + throw new MOAIDException("stork.11", null); } return "12345"; // TODO what to do here? diff --git a/id/server/moa-id-commons/moa-id-commons.iml b/id/server/moa-id-commons/moa-id-commons.iml index 08d15d746..8ded8b94a 100644 --- a/id/server/moa-id-commons/moa-id-commons.iml +++ b/id/server/moa-id-commons/moa-id-commons.iml @@ -26,8 +26,8 @@ - - + + @@ -71,9 +71,6 @@ - - - diff --git a/id/server/moa-id-commons/pom.xml b/id/server/moa-id-commons/pom.xml index 9a3cf4f7c..055a67bf4 100644 --- a/id/server/moa-id-commons/pom.xml +++ b/id/server/moa-id-commons/pom.xml @@ -1,235 +1,260 @@ - - 4.0.0 - - MOA.id - moa-id - 1.9.98-SNAPSHOT - - moa-id-commons - moa-id-commons - MOA.id.server - - - - hyberjaxb - http://repository.highsource.org/maven2/releases/ - true - - - JBoss IAIK - http://nexus.iaik.tugraz.at/nexus/content/repositories/nexus/ - - - - - - - org.hibernate - hibernate-core - 4.2.1.Final - - - org.hibernate - hibernate-c3p0 - 4.2.1.Final - - - org.hibernate - hibernate-entitymanager - 4.2.1.Final - - - - org.apache.commons - commons-lang3 - 3.1 - - - MOA - moa-common - jar - + + 4.0.0 + + MOA.id + moa-id + 1.9.98-SNAPSHOT + + moa-id-commons + moa-id-commons + MOA.id.server - - - - org.hibernate.javax.persistence - hibernate-jpa-2.0-api - 1.0.1.Final - - - - org.jvnet.hyperjaxb3 - hyperjaxb3-ejb-runtime - 0.5.6 - - - org.jvnet.hyperjaxb3 - maven-hyperjaxb3-plugin - 0.5.6 - - - mysql - mysql-connector-java - 5.1.25 - - - - - install - - - - src/main/resources/config - - **/*.java - - - - target/generated-sources/xjc - - **/*.java - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.5 - 1.5 - - - - org.apache.maven.plugins - maven-jar-plugin - - true - true - - false - - - - - - test-jar - - - - - - - org.jvnet.hyperjaxb3 - maven-hyperjaxb3-plugin - 0.5.6 - - - - generate - - - - - true - src/main/resources/config - src/main/resources/config - src/main/resources/config/persistence_template.xml - at.gv.egovernment.moa.id.commons.db.dao.config - - - - true - maven-compiler-plugin - 2.0.2 - - 1.5 - 1.5 - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.5 - - UTF-8 - UTF-8 - true - false - false - true - at.gv.egovernment.moa.spss.server.*;at.gv.egovernment.moa.spss.api.impl.*;at.gv.egovernment.moa.spss.impl.* - - - pre - a - Preconditions: - - - post - a - Postconditions: - - - - http://java.sun.com/j2se/1.4/docs/api/ - http://java.sun.com/j2se/1.5.0/docs/api/ - http://logging.apache.org/log4j/docs/api/ - - 1.5 - - - - generate-javadoc - package - - jar - - - - - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - - org.jvnet.hyperjaxb3 - - - maven-hyperjaxb3-plugin - - - [0.5.6,) - - - generate - - - - - - - - - - - - - + + + hyberjaxb + http://repository.highsource.org/maven2/releases/ + + true + + + + JBoss IAIK + http://nexus.iaik.tugraz.at/nexus/content/repositories/nexus/ + + + + + + + org.hibernate + hibernate-core + 4.2.1.Final + + + org.hibernate + hibernate-c3p0 + 4.2.1.Final + + + org.hibernate + hibernate-entitymanager + 4.2.1.Final + + + + org.apache.commons + commons-lang3 + 3.1 + + + MOA + moa-common + jar + + + + + + org.hibernate.javax.persistence + hibernate-jpa-2.0-api + 1.0.1.Final + + + + org.jvnet.hyperjaxb3 + hyperjaxb3-ejb-runtime + 0.5.6 + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + + + + org.jvnet.hyperjaxb3 + maven-hyperjaxb3-plugin + 0.5.6 + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-log4j12 + + + + + mysql + mysql-connector-java + 5.1.25 + + + + + install + + + + src/main/resources/config + + **/*.java + + + + target/generated-sources/xjc + + **/*.java + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.5 + 1.5 + + + + org.apache.maven.plugins + maven-jar-plugin + + true + true + + false + + + + + + test-jar + + + + + + + org.jvnet.hyperjaxb3 + maven-hyperjaxb3-plugin + 0.5.6 + + + + generate + + + + + true + src/main/resources/config + src/main/resources/config + src/main/resources/config/persistence_template.xml + at.gv.egovernment.moa.id.commons.db.dao.config + + + + true + maven-compiler-plugin + 2.0.2 + + 1.5 + 1.5 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.5 + + UTF-8 + UTF-8 + true + false + false + true + + at.gv.egovernment.moa.spss.server.*;at.gv.egovernment.moa.spss.api.impl.*;at.gv.egovernment.moa.spss.impl.* + + + + pre + a + Preconditions: + + + post + a + Postconditions: + + + + http://java.sun.com/j2se/1.4/docs/api/ + http://java.sun.com/j2se/1.5.0/docs/api/ + http://logging.apache.org/log4j/docs/api/ + + 1.5 + + + + generate-javadoc + package + + jar + + + + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + org.jvnet.hyperjaxb3 + + + maven-hyperjaxb3-plugin + + + [0.5.6,) + + + generate + + + + + + + + + + + + + \ No newline at end of file diff --git a/id/server/proxy/moa-id-proxy.iml b/id/server/proxy/moa-id-proxy.iml index 86fa1b292..936460e23 100644 --- a/id/server/proxy/moa-id-proxy.iml +++ b/id/server/proxy/moa-id-proxy.iml @@ -13,8 +13,8 @@ - - + + @@ -96,16 +96,7 @@ - - - - - - - - - - + @@ -131,12 +122,12 @@ - + diff --git a/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar b/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar index 5ad0cb42e..8414d7851 100644 Binary files a/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar and b/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar differ diff --git a/spss/handbook/clients/api/moa-spss-handbook-apiClient.iml b/spss/handbook/clients/api/moa-spss-handbook-apiClient.iml index c9c03b243..26b212283 100644 --- a/spss/handbook/clients/api/moa-spss-handbook-apiClient.iml +++ b/spss/handbook/clients/api/moa-spss-handbook-apiClient.iml @@ -1,8 +1,8 @@ - - + + diff --git a/spss/handbook/clients/webservice/moa-spss-handbook-webserviceClient.iml b/spss/handbook/clients/webservice/moa-spss-handbook-webserviceClient.iml index c9c03b243..26b212283 100644 --- a/spss/handbook/clients/webservice/moa-spss-handbook-webserviceClient.iml +++ b/spss/handbook/clients/webservice/moa-spss-handbook-webserviceClient.iml @@ -1,8 +1,8 @@ - - + + diff --git a/spss/server/serverlib/moa-spss-lib.iml b/spss/server/serverlib/moa-spss-lib.iml index 7864354f4..11dc743a9 100644 --- a/spss/server/serverlib/moa-spss-lib.iml +++ b/spss/server/serverlib/moa-spss-lib.iml @@ -45,8 +45,8 @@ - - + + diff --git a/spss/server/serverws/moa-spss-ws.iml b/spss/server/serverws/moa-spss-ws.iml index 60f6d1803..45ebf8969 100644 --- a/spss/server/serverws/moa-spss-ws.iml +++ b/spss/server/serverws/moa-spss-ws.iml @@ -15,8 +15,8 @@ - - + + -- cgit v1.2.3 From f144311799a2d491bc6c7de88f43665cc8ad2254 Mon Sep 17 00:00:00 2001 From: Andreas Reiter Date: Thu, 6 Mar 2014 11:02:58 +0100 Subject: Updated oasis-dss-api version to 1.0.0-RELEASE --- id/server/auth/pom.xml | 2 +- id/server/idserverlib/pom.xml | 2 +- .../moa/id/auth/AuthenticationServer.java | 2 +- .../moa/id/auth/servlet/PEPSConnectorServlet.java | 2 +- .../1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.jar | Bin 0 -> 282669 bytes .../1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.pom | 73 ++++++++++++++++++ .../oasis-dss-api-1.0.0-SNAPSHOT.jar | Bin 282629 -> 0 bytes .../oasis-dss-api-1.0.0-SNAPSHOT.pom | 85 --------------------- 8 files changed, 77 insertions(+), 89 deletions(-) create mode 100644 repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.jar create mode 100644 repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.pom delete mode 100644 repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar delete mode 100644 repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.pom (limited to 'repository') diff --git a/id/server/auth/pom.xml b/id/server/auth/pom.xml index c17722df0..e1fd9d55a 100644 --- a/id/server/auth/pom.xml +++ b/id/server/auth/pom.xml @@ -82,7 +82,7 @@ eu.stork oasis-dss-api - 1.0.0-SNAPSHOT + 1.0.0-RELEASE diff --git a/id/server/idserverlib/pom.xml b/id/server/idserverlib/pom.xml index 82a42cb8c..59275055f 100644 --- a/id/server/idserverlib/pom.xml +++ b/id/server/idserverlib/pom.xml @@ -33,7 +33,7 @@ eu.stork oasis-dss-api - 1.0.0-SNAPSHOT + 1.0.0-RELEASE diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java index 5ad399e2d..67a29f81a 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/AuthenticationServer.java @@ -124,7 +124,7 @@ import at.gv.util.xsd.srzgw.MISType; import at.gv.util.xsd.srzgw.MISType.Filters; import eu.stork.oasisdss.api.AdditionalProfiles; import eu.stork.oasisdss.api.ApiUtils; -import eu.stork.oasisdss.api.ApiUtilsException; +import eu.stork.oasisdss.api.exceptions.ApiUtilsException; import eu.stork.oasisdss.api.Profiles; import eu.stork.oasisdss.api.QualityLevels; import eu.stork.oasisdss.api.SignatureTypes; diff --git a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java index 6ed87a744..197e4cda7 100644 --- a/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java +++ b/id/server/idserverlib/src/main/java/at/gv/egovernment/moa/id/auth/servlet/PEPSConnectorServlet.java @@ -65,7 +65,7 @@ import at.gv.util.xsd.xmldsig.SignatureType; import at.gv.util.xsd.xmldsig.X509DataType; import eu.stork.oasisdss.api.ApiUtils; import eu.stork.oasisdss.api.LightweightSourceResolver; -import eu.stork.oasisdss.api.ApiUtilsException; +import eu.stork.oasisdss.api.exceptions.ApiUtilsException; import eu.stork.oasisdss.profile.SignResponse; import eu.stork.peps.auth.commons.PEPSUtil; import eu.stork.peps.auth.commons.PersonalAttribute; diff --git a/repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.jar b/repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.jar new file mode 100644 index 000000000..2943eac88 Binary files /dev/null and b/repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.jar differ diff --git a/repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.pom b/repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.pom new file mode 100644 index 000000000..7dab86ee0 --- /dev/null +++ b/repository/eu/stork/oasis-dss-api/1.0.0-RELEASE/oasis-dss-api-1.0.0-RELEASE.pom @@ -0,0 +1,73 @@ + + 4.0.0 + oasis-dss-api + eu.stork + 1.0.0-RELEASE + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.0.2 + + 1.6 + 1.6 + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-resources-plugin + 2.4 + + ${project.build.sourceEncoding} + + + + + + + UTF-8 + + + + log4j + log4j + 1.2.17 + + + xerces + xercesImpl + 2.11.0 + + provided + + + junit + junit + 4.11 + + + org.apache.commons + commons-io + 1.3.2 + + + + + + + + eu.medsea.mimeutil + mime-util + 2.1.3 + + + org.slf4j + slf4j-log4j12 + + + + + \ No newline at end of file diff --git a/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar b/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar deleted file mode 100644 index 8414d7851..000000000 Binary files a/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.jar and /dev/null differ diff --git a/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.pom b/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.pom deleted file mode 100644 index ef04f07c4..000000000 --- a/repository/eu/stork/oasis-dss-api/1.0.0-SNAPSHOT/oasis-dss-api-1.0.0-SNAPSHOT.pom +++ /dev/null @@ -1,85 +0,0 @@ - - 4.0.0 - oasis-dss-api - eu.stork - 1.0.0-SNAPSHOT - - - - org.codehaus.mojo - jaxb2-maven-plugin - 1.5 - - - oasis-dss - - xjc - - - - - - -npa - - ${project.basedir}/src/main/resources/schema/oasis-dss - oasis-dss-core-schema-v1.0-os.xsd - eu.stork.oasisdss.profile - true - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.0.2 - - 1.6 - 1.6 - ${project.build.sourceEncoding} - - - - org.apache.maven.plugins - maven-resources-plugin - 2.4 - - ${project.build.sourceEncoding} - - - - - - - UTF-8 - - - - log4j - log4j - 1.2.17 - - - xerces - xercesImpl - 2.11.0 - - provided - - - junit - junit - 4.11 - - - org.apache.commons - commons-io - 1.3.2 - - - com.sun.xml.ws - jaxws-rt - 2.1.7 - - - - \ No newline at end of file -- cgit v1.2.3 From 6cc5cd2311c9e6cde062fa4034444969f9c293e0 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Sun, 9 Mar 2014 21:04:57 +0100 Subject: POMs added to dependencies maven-assembly-plugin version set to 2.2-beta-1 (for MOA-SPSS) Update TSL parts --- .../java/at/gv/egovernment/moa/util/MiscUtil.java | 28 ++++++++++----------- pom.xml | 10 +++++--- .../1.0/iaik_javax_crypto-1.0.pom | 9 +++++++ .../3.181/iaik_jce_eval_signed-3.181.jar | Bin 890328 -> 921338 bytes .../3.181/iaik_jce_eval_signed-3.181.pom | 9 +++++++ repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.pom | 9 +++++++ .../iaik_pki_module/1.0/iaik_pki_module-1.0.pom | 9 +++++++ repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.pom | 9 +++++++ repository/iaik/iaik_util/0.23/iaik_util-0.23.jar | Bin 39377 -> 39372 bytes repository/iaik/iaik_util/0.23/iaik_util-0.23.pom | 9 +++++++ .../1.1709142/iaik_xsect_eval-1.1709142.pom | 9 +++++++ repository/iaik/w3c_http/1.0/w3c_http-1.0.pom | 9 +++++++ .../server/config/ConfigurationPartsBuilder.java | 24 +++++++++++++++--- .../spss/server/config/ConfigurationProvider.java | 5 ++-- spss/server/serverws/pom.xml | 2 +- 15 files changed, 116 insertions(+), 25 deletions(-) create mode 100644 repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.pom create mode 100644 repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.pom create mode 100644 repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.pom create mode 100644 repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.pom create mode 100644 repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.pom create mode 100644 repository/iaik/iaik_util/0.23/iaik_util-0.23.pom create mode 100644 repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.pom create mode 100644 repository/iaik/w3c_http/1.0/w3c_http-1.0.pom (limited to 'repository') diff --git a/common/src/main/java/at/gv/egovernment/moa/util/MiscUtil.java b/common/src/main/java/at/gv/egovernment/moa/util/MiscUtil.java index 043baea0e..c2f2c9f47 100644 --- a/common/src/main/java/at/gv/egovernment/moa/util/MiscUtil.java +++ b/common/src/main/java/at/gv/egovernment/moa/util/MiscUtil.java @@ -143,20 +143,20 @@ public class MiscUtil { return out.toByteArray(); } - public static Document parseDocument(InputStream inputStream) - throws IOException { - try { - DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory - .newInstance(); - docBuilderFactory.setNamespaceAware(true); - DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); - return docBuilder.parse(inputStream); - } catch (ParserConfigurationException e) { - throw new IOException(e); - } catch (SAXException e) { - throw new IOException(e); - } - } +// public static Document parseDocument(InputStream inputStream) +// throws IOException { +// try { +// DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory +// .newInstance(); +// docBuilderFactory.setNamespaceAware(true); +// DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); +// return docBuilder.parse(inputStream); +// } catch (ParserConfigurationException e) { +// throw new IOException(e); +// } catch (SAXException e) { +// throw new IOException(e); +// } +// } public static String removePrecedingSlash(String path, String slash) { assertNotEmpty(slash, "Shash"); diff --git a/pom.xml b/pom.xml index 2ac793aa2..c8fc00ea1 100644 --- a/pom.xml +++ b/pom.xml @@ -9,6 +9,7 @@ ${basedir}/repository + UTF-8 @@ -64,7 +65,8 @@ false maven-assembly-plugin - 2.4 + 2.2-beta-1 + moa @@ -204,7 +206,7 @@ MOA.spss.server moa-spss-lib - 2.0.0 + 1.5.2 compile @@ -217,7 +219,7 @@ MOA.spss.server moa-spss-tools - 2.0.0 + 1.5.2 test @@ -354,7 +356,7 @@ iaik.prod iaik_tsl - 1.0 + 1.0.5 iaik.prod diff --git a/repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.pom b/repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.pom new file mode 100644 index 000000000..b4ff61576 --- /dev/null +++ b/repository/iaik/iaik_javax_crypto/1.0/iaik_javax_crypto-1.0.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_javax_crypto + 1.0 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar b/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar index 98b5e27a2..932e4310f 100644 Binary files a/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar and b/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.jar differ diff --git a/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.pom b/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.pom new file mode 100644 index 000000000..9bcbb93a5 --- /dev/null +++ b/repository/iaik/iaik_jce_eval_signed/3.181/iaik_jce_eval_signed-3.181.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_jce_eval_signed + 3.181 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.pom b/repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.pom new file mode 100644 index 000000000..382c12003 --- /dev/null +++ b/repository/iaik/iaik_jsse/4.4/iaik_jsse-4.4.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_jsse + 4.4 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.pom b/repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.pom new file mode 100644 index 000000000..e78656647 --- /dev/null +++ b/repository/iaik/iaik_pki_module/1.0/iaik_pki_module-1.0.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_pki_module + 1.0 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.pom b/repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.pom new file mode 100644 index 000000000..32c610268 --- /dev/null +++ b/repository/iaik/iaik_ssl/4.4/iaik_ssl-4.4.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_ssl + 4.4 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar b/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar index 1bc0cde7c..78370c31e 100644 Binary files a/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar and b/repository/iaik/iaik_util/0.23/iaik_util-0.23.jar differ diff --git a/repository/iaik/iaik_util/0.23/iaik_util-0.23.pom b/repository/iaik/iaik_util/0.23/iaik_util-0.23.pom new file mode 100644 index 000000000..75fdc3692 --- /dev/null +++ b/repository/iaik/iaik_util/0.23/iaik_util-0.23.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_util + 0.23 + POM was created from install:install-file + diff --git a/repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.pom b/repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.pom new file mode 100644 index 000000000..2697348bd --- /dev/null +++ b/repository/iaik/iaik_xsect_eval/1.1709142/iaik_xsect_eval-1.1709142.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + iaik_xsect_eval + 1.1709142 + POM was created from install:install-file + diff --git a/repository/iaik/w3c_http/1.0/w3c_http-1.0.pom b/repository/iaik/w3c_http/1.0/w3c_http-1.0.pom new file mode 100644 index 000000000..81f3e826c --- /dev/null +++ b/repository/iaik/w3c_http/1.0/w3c_http-1.0.pom @@ -0,0 +1,9 @@ + + + 4.0.0 + iaik + w3c_http + 1.0 + POM was created from install:install-file + diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java index 0908d88c9..287d8225b 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationPartsBuilder.java @@ -1385,6 +1385,22 @@ public class ConfigurationPartsBuilder { Logger.warn(new LogMsg(txt)); warnings.add(txt); } + + /** + * Log a warning. + * + * @param messageId The message ID. + * @param args Additional parameters for the message. + * @see at.gv.egovernment.moa.spss.server.util.MessageProvider + */ + private void debug(String messageId, Object[] args) { + MessageProvider msg = MessageProvider.getInstance(); + String txt = msg.getMessage(messageId, args); + + Logger.debug(new LogMsg(txt)); + + } + /** * Log a debug message. @@ -1581,27 +1597,27 @@ public class ConfigurationPartsBuilder { String euTSLUrl = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "EUTSLUrl", null); if (StringUtils.isEmpty(euTSLUrl)) { euTSLUrl = TSLConfiguration.DEFAULT_EU_TSL_URL; - warn("config.39", new Object[] { "EUTSL", euTSLUrl }); + debug("config.39", new Object[] { "EUTSL", euTSLUrl }); } String updateSchedulePeriod = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "Period" , null); if (StringUtils.isEmpty(updateSchedulePeriod)) { updateSchedulePeriod = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_PERIOD; - warn("config.39", new Object[] { "UpdateSchedule/Period", updateSchedulePeriod }); + debug("config.39", new Object[] { "UpdateSchedule/Period", updateSchedulePeriod }); } String updateScheduleStartTime = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "UpdateSchedule/" + CONF + "StartTime", null); if (StringUtils.isEmpty(updateScheduleStartTime)) { updateScheduleStartTime = TSLConfiguration.DEFAULT_UPDATE_SCHEDULE_STARTTIME; - warn("config.39", new Object[] { "UpdateSchedule/StartTime", updateScheduleStartTime }); + debug("config.39", new Object[] { "UpdateSchedule/StartTime", updateScheduleStartTime }); } String workingDirectoryStr = getElementValue(getConfigElem(), TSL_CONFIGURATION_XPATH + CONF + "WorkingDirectory", null); if (StringUtils.isEmpty(workingDirectoryStr)) { workingDirectoryStr = TSLConfiguration.DEFAULT_WORKING_DIR; - warn("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); + debug("config.39", new Object[] { "WorkingDirectory", workingDirectoryStr }); } // convert update schedule starting time to Date object diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java index 2cad35763..87a4b50f4 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/server/config/ConfigurationProvider.java @@ -347,6 +347,8 @@ public class ConfigurationProvider try { builder = new ConfigurationPartsBuilder(configElem, configRoot); + tslconfiguration_ = builder.getTSLConfiguration(); + digestMethodAlgorithmName = builder.getDigestMethodAlgorithmName(); canonicalizationAlgorithmName = builder.getCanonicalizationAlgorithmName(); @@ -361,8 +363,6 @@ public class ConfigurationProvider keyGroupMappings = builder.buildKeyGroupMappings(keyGroups, ANONYMOUS_ISSUER_SERIAL); - tslconfiguration_ = builder.getTSLConfiguration(); - xadesVersion = builder.getXAdESVersion(); defaultChainingMode = builder.getDefaultChainingMode(); chainingModes = builder.buildChainingModes(); @@ -379,6 +379,7 @@ public class ConfigurationProvider revocationArchiveJDBCDriverClass_ = builder.getRevocationArchiveJDBCDriverClass(); + //check TSL configuration checkTSLConfiguration(); diff --git a/spss/server/serverws/pom.xml b/spss/server/serverws/pom.xml index 4372c76d0..0314cb454 100644 --- a/spss/server/serverws/pom.xml +++ b/spss/server/serverws/pom.xml @@ -22,7 +22,7 @@ org.apache.maven.plugins maven-war-plugin - 2.1.1 + 2.3 -- cgit v1.2.3 From 51a43cf305020f780c52cfe1d70e793be9391f16 Mon Sep 17 00:00:00 2001 From: Klaus Stranacher Date: Mon, 17 Mar 2014 21:13:42 +0100 Subject: Update to version 2.0.0 (pom, handbook, etc.) Handbook usage updated (TSL example added) Update TSL handling --- common/pom.xml | 2 +- pom.xml | 12 +- repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar | Bin 0 -> 549794 bytes repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom | 251 +++++++++ spss/handbook/clients/api/pom.xml | 4 +- spss/handbook/clients/pom.xml | 4 +- spss/handbook/clients/referencedData/pom.xml | 4 +- spss/handbook/clients/webservice/pom.xml | 4 +- .../VerifyXMLSignatureRequest.TSL.resp.xml | 50 ++ .../requests/VerifyXMLSignatureRequest.TSL.xml | 6 + spss/handbook/conf/moa-spss/log4j.properties | 2 +- .../conf/moa-spss/sp.minimum_with_tsl.config.xml | 4 +- .../handbook/config/MOA-SPSS-config-1.5.2.xsd | 353 ------------- .../handbook/config/MOA-SPSS-config-2.0.0.xsd | 353 +++++++++++++ spss/handbook/handbook/config/config.html | 2 +- spss/handbook/handbook/index.html | 2 +- spss/handbook/handbook/install/install.html | 6 +- spss/handbook/handbook/intro/intro.html | 2 +- spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf | Bin 555449 -> 0 bytes spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl | 128 ----- spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd | 572 --------------------- spss/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf | Bin 0 -> 291606 bytes spss/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl | 128 +++++ spss/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd | 572 +++++++++++++++++++++ spss/handbook/handbook/usage/usage.html | 64 +++ spss/handbook/pom.xml | 4 +- spss/pom.xml | 4 +- spss/server/history.txt | 6 +- spss/server/pom.xml | 4 +- spss/server/readme.update.txt | 8 +- spss/server/serverlib/pom.xml | 4 +- .../moa/spss/tsl/connector/TSLConnector.java | 1 + .../moa/spss/tsl/timer/TSLUpdaterTimerTask.java | 46 +- .../spss/tsl/utils/TSLImportFromFileContext.java | 343 +++++++----- .../.settings/org.eclipse.wst.common.component | 4 +- spss/server/serverws/pom.xml | 4 +- spss/server/tools/pom.xml | 4 +- 37 files changed, 1699 insertions(+), 1258 deletions(-) create mode 100644 repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.jar create mode 100644 repository/iaik/iaik_tsl/1.0/iaik_tsl-1.0.pom create mode 100644 spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml create mode 100644 spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml delete mode 100644 spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd create mode 100644 spss/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd delete mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf delete mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl delete mode 100644 spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd create mode 100644 spss/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf create mode 100644 spss/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl create mode 100644 spss/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd (limited to 'repository') diff --git a/common/pom.xml b/common/pom.xml index d5d960a6d..468ecaf2d 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -2,7 +2,7 @@ MOA MOA - 1.5.2 + 2.0.0 4.0.0 moa-common diff --git a/pom.xml b/pom.xml index 395686287..54cf9a2e7 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ MOA MOA pom - 1.5.2 + 2.0.0 MOA @@ -194,7 +194,7 @@ MOA moa-common - 1.5.2 + 2.0.0 compile + + javax.xml.bind + jaxb-api + 2.2.6 + + + com.sun.xml.bind + jaxb-impl + 2.2.6 + + + + + + profile-for-jdk1.5 + + true + (,1.5] + + + 1.5 + jdk${java.version} + + + ${project.artifactId}-${project.version}-${envClassifier} + + + + + javax.xml.bind + jaxb-api + 2.2.4 + + + com.sun.xml.bind + jaxb-impl + 2.2.4-1 + + + + + + + + + iaik + iaik_xsect_eval + 1.1709142 + + + iaik + iaik_ecc_signed + 2.19 + + + iaik + iaik_jce_eval_signed + 3.181 + + + iaik + iaik_pki_module + 1.0 + + + iaik + iaik_javax_crypto + 1.0 + + + iaik + iaik_util + + 0.23 + + + iaik + iaik_jsse + 4.4 + + + iaik + iaik_ssl + 4.4 + + + iaik + w3c_http + 1.0 + + + org.xerial + sqlite-jdbc + 3.7.2 + + + + + javax.activation + activation + 1.1.1 + + + stax + stax-api + 1.0.1 + + + xerces + xercesImpl + 2.7.1 + + + + \ No newline at end of file diff --git a/spss/handbook/clients/api/pom.xml b/spss/handbook/clients/api/pom.xml index 5a978964b..442d4fdb7 100644 --- a/spss/handbook/clients/api/pom.xml +++ b/spss/handbook/clients/api/pom.xml @@ -2,14 +2,14 @@ MOA.spss.handbook.clients moa-spss-handbook-clients - 1.5 + 2.0 4.0.0 MOA.spss.handbook moa-spss-handbook-apiClient jar - 1.5 + 2.0 MOA SP/SS Handbook API Client diff --git a/spss/handbook/clients/pom.xml b/spss/handbook/clients/pom.xml index 5a4ab81c8..3b3bfd6b2 100644 --- a/spss/handbook/clients/pom.xml +++ b/spss/handbook/clients/pom.xml @@ -3,14 +3,14 @@ MOA.spss.handbook moa-spss-handbook - 1.5 + 2.0 4.0.0 MOA.spss.handbook.clients moa-spss-handbook-clients pom - 1.5 + 2.0 MOA SP/SS Handbook Clients diff --git a/spss/handbook/clients/referencedData/pom.xml b/spss/handbook/clients/referencedData/pom.xml index 9a8a3b68e..8e0378bd6 100644 --- a/spss/handbook/clients/referencedData/pom.xml +++ b/spss/handbook/clients/referencedData/pom.xml @@ -3,14 +3,14 @@ MOA.spss.handbook.clients moa-spss-handbook-clients - 1.5 + 2.0 4.0.0 MOA.spss.handbook moa-spss-handbook-referencedData war - 1.5 + 2.0 MOA SP/SS Handbook Referenced Data diff --git a/spss/handbook/clients/webservice/pom.xml b/spss/handbook/clients/webservice/pom.xml index 4221e6cc1..bc1859408 100644 --- a/spss/handbook/clients/webservice/pom.xml +++ b/spss/handbook/clients/webservice/pom.xml @@ -2,14 +2,14 @@ MOA.spss.handbook.clients moa-spss-handbook-clients - 1.5 + 2.0 4.0.0 MOA.spss.handbook.clients moa-spss-handbook-webserviceClient jar - 1.5 + 2.0 MOA SP/SS Handbook WebService Client diff --git a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml new file mode 100644 index 000000000..8691c4563 --- /dev/null +++ b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.resp.xml @@ -0,0 +1,50 @@ + + + + + T=DI,serialNumber=847206943023,givenName=Klaus,SN=Stranacher,CN=Klaus Stranacher,C=AT + + CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT + 685117 + + MIIEtTCCA52gAwIBAgIDCnQ9MA0GCSqGSIb3DQEBBQUAMIGdMQswCQYDVQQGEwJB +VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp +bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMSEwHwYDVQQLDBhhLXNpZ24tcHJl +bWl1bS1tb2JpbGUtMDMxITAfBgNVBAMMGGEtc2lnbi1wcmVtaXVtLW1vYmlsZS0w +MzAeFw0xMjAxMTkxMDUwNDRaFw0xNzAxMTkxMDUwNDRaMHExCzAJBgNVBAYTAkFU +MRkwFwYDVQQDDBBLbGF1cyBTdHJhbmFjaGVyMRMwEQYDVQQEDApTdHJhbmFjaGVy +MQ4wDAYDVQQqDAVLbGF1czEVMBMGA1UEBRMMODQ3MjA2OTQzMDIzMQswCQYDVQQM +DAJESTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCl9cWMwe9LaXbcwuLCMRXS6 +KYhou9Fzvo7ScXpwcRn1sbTSjUIIhLUTrqfqO/pnwoKd87PmNcGUFoCXvsb4lUqj +ggHyMIIB7jARBgNVHQ4ECgQITPnzawkXeUUwDgYDVR0PAQH/BAQDAgbAMBMGA1Ud +IwQMMAqACEu4Yddf1khjMAkGA1UdEwQCMAAwfgYIKwYBBQUHAQEEcjBwMEUGCCsG +AQUFBzAChjlodHRwOi8vd3d3LmEtdHJ1c3QuYXQvY2VydHMvYS1zaWduLXByZW1p +dW0tbW9iaWxlLTAzYS5jcnQwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLmEtdHJ1 +c3QuYXQvb2NzcDBgBgNVHSAEWTBXMEsGBiooABEBFDBBMD8GCCsGAQUFBwIBFjNo +dHRwOi8vd3d3LmEtdHJ1c3QuYXQvZG9jcy9jcC9hLXNpZ24tcHJlbWl1bS1tb2Jp +bGUwCAYGBACLMAEBMCcGCCsGAQUFBwEDAQH/BBgwFjAIBgYEAI5GAQEwCgYIKwYB +BQUHCwEwgZ0GA1UdHwSBlTCBkjCBj6CBjKCBiYaBhmxkYXA6Ly9sZGFwLmEtdHJ1 +c3QuYXQvb3U9YS1zaWduLXByZW1pdW0tbW9iaWxlLTAzLG89QS1UcnVzdCxjPUFU +P2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/YmFzZT9vYmplY3RjbGFzcz1laWRD +ZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MA0GCSqGSIb3DQEBBQUAA4IBAQBWEeyDzBQA +5O5CY7z6K9EwbXxxuuaEEb1GVIyTZ4DcfodjkEEdGqWicsPdUUJDZ7ETyaKucgVt +WaOHaObkCua9tM5TP3YtaEyDRteqU7N6LMDcMrXle8WOTUcIhSFy5UU8SnFtbZyQ +v+eeAW48PVq5pzBzizGNtMKCv9XC7df5ARhDEU7tYaVrKIobTdeq8D7zXnZ2Wdt9 +6VG6QBe8eH49bAxabnOk/rF6TMO2NX4h/tlQLBzOdOeEolUHOHkA3L01REL2m/6k +lPNsA8mX++cD3yKuoCWxtl27peTscRyGKEo2EBLtt7mfaTFBbkdKo1WUkZ+dVesa +XtKckFCEtW3r + + + AT + + + + 0 + + + 0 + + + 0 + + diff --git a/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml new file mode 100644 index 000000000..efdc2a76a --- /dev/null +++ b/spss/handbook/clients/webservice/resources/requests/VerifyXMLSignatureRequest.TSL.xml @@ -0,0 +1,6 @@ + + +id('signed-data-1-1')/node()ck5CfKRJ6J4x7YusP2LmJXRBo3sFoSgTCXlujYNSFvI=//*[@Id='etsi-signed-1-1']/etsi:QualifyingProperties/etsi:SignedPropertiestwh9pMjAoknEfJ97w9PA8pEnVFrKb/14Mmdl6AhweE8=N5mPWLfwxBrJIVQEAktiZqStkManxG7P8GBE8rw5DCEB2k7OctmvlPLLy+JtQy11OVNU0ISQeJn3BprTxgU/tw==MIIEtTCCA52gAwIBAgIDCnQ9MA0GCSqGSIb3DQEBBQUAMIGdMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMSEwHwYDVQQLDBhhLXNpZ24tcHJlbWl1bS1tb2JpbGUtMDMxITAfBgNVBAMMGGEtc2lnbi1wcmVtaXVtLW1vYmlsZS0wMzAeFw0xMjAxMTkxMDUwNDRaFw0xNzAxMTkxMDUwNDRaMHExCzAJBgNVBAYTAkFUMRkwFwYDVQQDDBBLbGF1cyBTdHJhbmFjaGVyMRMwEQYDVQQEDApTdHJhbmFjaGVyMQ4wDAYDVQQqDAVLbGF1czEVMBMGA1UEBRMMODQ3MjA2OTQzMDIzMQswCQYDVQQMDAJESTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCl9cWMwe9LaXbcwuLCMRXS6KYhou9Fzvo7ScXpwcRn1sbTSjUIIhLUTrqfqO/pnwoKd87PmNcGUFoCXvsb4lUqjggHyMIIB7jARBgNVHQ4ECgQITPnzawkXeUUwDgYDVR0PAQH/BAQDAgbAMBMGA1UdIwQMMAqACEu4Yddf1khjMAkGA1UdEwQCMAAwfgYIKwYBBQUHAQEEcjBwMEUGCCsGAQUFBzAChjlodHRwOi8vd3d3LmEtdHJ1c3QuYXQvY2VydHMvYS1zaWduLXByZW1pdW0tbW9iaWxlLTAzYS5jcnQwJwYIKwYBBQUHMAGGG2h0dHA6Ly9vY3NwLmEtdHJ1c3QuYXQvb2NzcDBgBgNVHSAEWTBXMEsGBiooABEBFDBBMD8GCCsGAQUFBwIBFjNodHRwOi8vd3d3LmEtdHJ1c3QuYXQvZG9jcy9jcC9hLXNpZ24tcHJlbWl1bS1tb2JpbGUwCAYGBACLMAEBMCcGCCsGAQUFBwEDAQH/BBgwFjAIBgYEAI5GAQEwCgYIKwYBBQUHCwEwgZ0GA1UdHwSBlTCBkjCBj6CBjKCBiYaBhmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9YS1zaWduLXByZW1pdW0tbW9iaWxlLTAzLG89QS1UcnVzdCxjPUFUP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/YmFzZT9vYmplY3RjbGFzcz1laWRDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MA0GCSqGSIb3DQEBBQUAA4IBAQBWEeyDzBQA5O5CY7z6K9EwbXxxuuaEEb1GVIyTZ4DcfodjkEEdGqWicsPdUUJDZ7ETyaKucgVtWaOHaObkCua9tM5TP3YtaEyDRteqU7N6LMDcMrXle8WOTUcIhSFy5UU8SnFtbZyQv+eeAW48PVq5pzBzizGNtMKCv9XC7df5ARhDEU7tYaVrKIobTdeq8D7zXnZ2Wdt96VG6QBe8eH49bAxabnOk/rF6TMO2NX4h/tlQLBzOdOeEolUHOHkA3L01REL2m/6klPNsA8mX++cD3yKuoCWxtl27peTscRyGKEo2EBLtt7mfaTFBbkdKo1WUkZ+dVesaXtKckFCEtW3r2014-03-17T12:08:58ZrUAiWR/xWih+N/Aa7AUvetg2FFU=CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT685117text/plainIch bin ein einfacher Text. +//dsig:Signature +Test-TSLProfil + \ No newline at end of file diff --git a/spss/handbook/conf/moa-spss/log4j.properties b/spss/handbook/conf/moa-spss/log4j.properties index 02b767b87..67bd58309 100644 --- a/spss/handbook/conf/moa-spss/log4j.properties +++ b/spss/handbook/conf/moa-spss/log4j.properties @@ -8,7 +8,7 @@ org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFacto # Configure root logger and loggers for moa-spss log4j.rootLogger=info, stdout log4j.logger.moa.spss.server=info, moaspss -log4j.logger.iaik.server=info, moaspss +log4j.logger.iaik.server=warn, moaspss # Configure the 'stdout' appender to write logging output to the console log4j.appender.stdout=org.apache.log4j.ConsoleAppender diff --git a/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml b/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml index 79345890a..8d7541b73 100644 --- a/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml +++ b/spss/handbook/conf/moa-spss/sp.minimum_with_tsl.config.xml @@ -119,13 +119,13 @@ - + diff --git a/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd b/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd deleted file mode 100644 index 391ef4133..000000000 --- a/spss/handbook/handbook/config/MOA-SPSS-config-1.5.2.xsd +++ /dev/null @@ -1,353 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd b/spss/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd new file mode 100644 index 000000000..391ef4133 --- /dev/null +++ b/spss/handbook/handbook/config/MOA-SPSS-config-2.0.0.xsd @@ -0,0 +1,353 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/handbook/handbook/config/config.html b/spss/handbook/handbook/config/config.html index f44bd7dc0..3ef04f90c 100644 --- a/spss/handbook/handbook/config/config.html +++ b/spss/handbook/handbook/config/config.html @@ -143,7 +143,7 @@

1.2 Zentrale Konfigurationsdatei

-

Die Konfiguration von MOA SP/SS erfolgt zentral über eine einzige Konfigurationsdatei. Das Format der Konfigurationsdatei ist XML und muss dem Schema MOA-SPSS-config-1.5.2.xsd entsprechen. Abschnitt 2 erläutert die Konfigurationsmöglichkeiten im Einzelnen.

+

Die Konfiguration von MOA SP/SS erfolgt zentral über eine einzige Konfigurationsdatei. Das Format der Konfigurationsdatei ist XML und muss dem Schema MOA-SPSS-config-2.0.0.xsd entsprechen. Abschnitt 2 erläutert die Konfigurationsmöglichkeiten im Einzelnen.

1.2.1 Aktualisierung auf das Format von MOA SP/SS 1.3

Mit dem Wechsel auf Version 1.3 verwendet MOA SP/SS ein neues, übersichtlicheres Format für die diff --git a/spss/handbook/handbook/index.html b/spss/handbook/handbook/index.html index 69edc2437..f84920d0a 100644 --- a/spss/handbook/handbook/index.html +++ b/spss/handbook/handbook/index.html @@ -15,7 +15,7 @@


MOA: Serversignatur (SS) und Signaturprüfung (SP)

-

Übersicht zur Dokumentation der Version 1.5.2

+

Übersicht zur Dokumentation der Version 2.0.0


Einführung
diff --git a/spss/handbook/handbook/install/install.html b/spss/handbook/handbook/install/install.html index 3c3414d29..d44ce6514 100644 --- a/spss/handbook/handbook/install/install.html +++ b/spss/handbook/handbook/install/install.html @@ -131,7 +131,7 @@
Installation von Apache Tomcat
Installieren Sie Apache Tomcat in ein Verzeichnis, das keine Leerzeichen im Pfadnamen enthält. Verwenden Sie bitte die zu Ihrer Java SE passende Distribution von Tomcat. Das Wurzelverzeichnis der Tomcat-Installation wird im weiteren Verlauf als $CATALINA_HOME bezeichnet.
Entpacken der MOA SP/SS Webservice Distribution
-
Entpacken Sie die Datei moa-spss-1.5.2.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
+
Entpacken Sie die Datei moa-spss-2.0.0.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
Installation der Kryptographiebibliotheken von SIC/IAIK

Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden Unlimited Strength @@ -385,7 +385,7 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null>

Installation von Java SE
Installieren Sie Java SE in ein beliebiges Verzeichnis. Das Wurzelverzeichnis der Java SE Installation wird im weiteren Verlauf als $JAVA_HOME bezeichnet.
Entpacken der MOA SP/SS Klassenbibliotheks-Distribution
-
Entpacken Sie die Datei moa-spss-1.5.2-lib.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
+
Entpacken Sie die Datei moa-spss-2.0.0-lib.zip in ein beliebiges Verzeichnis. Dieses Verzeichnis wird im weiteren Verlauf als $MOA_SPSS_INST bezeichnet.
Installation der Kryptographiebibliotheken von SIC/IAIK

Kopieren Sie alle Dateien aus dem Verzeichnis $MOA_SPSS_INST/ext in das Verzeichnis $JAVA_HOME/jre/lib/ext. Zusätzlich müssen Sie die Rechtedateien Ihrer Java SE austauschen. Laden Sie dazu die passenden Unlimited Strength @@ -403,7 +403,7 @@ INFO | 01 21:25:26,540 | Thread-3 | TID=1049225059594-100 NID=<null> MOA SP/SS -1.5.2  +2.0.0  moa-spss.jar, moa-common.jar MOA IAIK diff --git a/spss/handbook/handbook/intro/intro.html b/spss/handbook/handbook/intro/intro.html index 286ebb961..138ca61e8 100644 --- a/spss/handbook/handbook/intro/intro.html +++ b/spss/handbook/handbook/intro/intro.html @@ -30,7 +30,7 @@


1 Allgemeines

Die Module Serversignatur (SS) und Signaturprüfung (SP) können von Anwendungen verwendet werden, um elektronische Signaturen zu erstellen bzw. vorliegende elektronische Signaturen zu überprüfen.

-

Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V1.5.2) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.2.7) aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

+

Die Funktionalität und der Aufbau der Schnittstelle zu den beiden Modulen ist in der Spezifikation MOA SP/SS (V2.0.0) detailliert beschrieben. Da diese Spezifikation auf der Schnittstellenspezifikation des Security-Layers (V 1.2.7) aufbaut, ist deren Kenntnis zum Verstehen der Schnittstellen zu SS und SP erforderlich.

2 Modul Serversignatur (SS)

Das Modul Serversignatur (SS) dient zum Erstellen von XML-Signaturen in Anlehnung an die Schnittstellenspezifikation des Security-Layers (V 1.2.7). Eine Signatur kann entweder rein in Software erstellt werden, oder aber unter Zuhilfenahme eines Hardware Security Modules (HSM), das den privaten Schlüssel geschützt enthält und die Signatur berechnet.

Der Zugriff auf einzelne Signaturschlüssel in MOA SS kann basierend auf dem für TLS-Client-Authentisierung verwendeten Zertifikat eingeschränkt werden.

diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf deleted file mode 100644 index 25c0c091e..000000000 Binary files a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.pdf and /dev/null differ diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl deleted file mode 100644 index 7c1b0c438..000000000 --- a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.wsdl +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd b/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd deleted file mode 100644 index 739b12431..000000000 --- a/spss/handbook/handbook/spec/MOA-SPSS-1.5.2.xsd +++ /dev/null @@ -1,572 +0,0 @@ - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage - - - - Resultat, falls die Signaturerstellung erfolgreich war - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. - - - - - - - - - - mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert - - - - - - - - - - - only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Resultat, falls die Signaturerstellung gescheitert ist - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. - - - - - Profilbezeichner für einen Transformationsweg - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. - - - - Der Transformationsparameter explizit angegeben. - - - - - Der Hashwert des Transformationsparameters. - - - - - - - - - - - - - - - - - - - - - - Explizite Angabe des Transformationswegs - - - - - - - Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. - - - - - - - - - - - - - - - - diff --git a/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf b/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf new file mode 100644 index 000000000..6cf538229 Binary files /dev/null and b/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.pdf differ diff --git a/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl b/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl new file mode 100644 index 000000000..c8bf32950 --- /dev/null +++ b/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.wsdl @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd b/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd new file mode 100644 index 000000000..739b12431 --- /dev/null +++ b/spss/handbook/handbook/spec/MOA-SPSS-2.0.0.xsd @@ -0,0 +1,572 @@ + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage + + + + Resultat, falls die Signaturerstellung erfolgreich war + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur. + + + + + + + + + + mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert + + + + + + + + + + + only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any; SecureSignatureCreationDevice is included as X509Data/any, IssuingCountry is included as X509Data/any + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Resultat, falls die Signaturerstellung gescheitert ist + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen. + + + + + Profilbezeichner für einen Transformationsweg + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann. + + + + Der Transformationsparameter explizit angegeben. + + + + + Der Hashwert des Transformationsparameters. + + + + + + + + + + + + + + + + + + + + + + Explizite Angabe des Transformationswegs + + + + + + + Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird. + + + + + + + + + + + + + + + + diff --git a/spss/handbook/handbook/usage/usage.html b/spss/handbook/handbook/usage/usage.html index dee5a08fd..0bf585d76 100644 --- a/spss/handbook/handbook/usage/usage.html +++ b/spss/handbook/handbook/usage/usage.html @@ -52,6 +52,7 @@
  • Prüfung eines XMLDSIG-Manifests
  • Ergänzungsobjekte
  • Signatur-Manifest des Security-Layers
  • +
  • Prüfung gegen Trustprofil mit TSL Unterstützung
  • @@ -1185,6 +1186,69 @@ Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph> </VerifyXMLSignatureResponse>

    Das Element CertificateCheck enthält das Resultat der Zertifikatsprüfung (siehe Einfaches Beispiel).

    + +

    2.1.4.6 Prüfung gegen Trustprofil mit TSL Unterstützung

    +
    Request
    +

    VerifyXMLSignatureRequest.TSL.xml ist ein einfacher XML-Request zur Prüfung einer XML-Signatur. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass der dargestellte Request zur bessernen Lesbarkeit eingerückt und gekürzt wurde.

    +
    +<VerifyXMLSignatureRequest xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#">
    +  <VerifySignatureInfo>
    +    <VerifySignatureEnvironment>
    +      <XMLContent>
    +        <dsig:Signature Id="signature-1-1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
    +          [..]
    +        </dsig:Signature>
    +      </XMLContent>
    +    </VerifySignatureEnvironment>
    +
    +

    Das Element VerifySignatureEnvironment enthält jenes XML-Dokument, das die zu prüfende XML-Signatur enthält.

    +
    +    <VerifySignatureLocation
    +      xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">//dsig:Signature</VerifySignatureLocation>
    +  </VerifySignatureInfo>
    +
    +

    Das Element VerifySignatureLocation enthält als Text den XPath-Ausdruck zur Selektion der XML-Signatur innerhalb des zu prüfenden XML-Dokuments. Die Auswertung des XPath-Ausdrucks muss genau ein Element dsig:Signature ergeben. Bitte beachten Sie, dass im Kontext des Elements VerifySignatureLocation alle im XPath-Ausdruck verwendeten Namespace-Präfixe bekannt sein müssen (hier das Präfix dsig).

    +
    +  <TrustProfileID>Test-TSLProfil</TrustProfileID>
    +</VerifyXMLSignatureRequest>
    +
    +

    Das Element TrustProfileID schließlich enthält den Bezeichner des Vertrauensprofils, gegen das die Zertifikatsprüfung von MOA SP durchgeführt wird. In diesem Falle muss für das Vertrauenprofil die TSL Unterstützung aktiviert sein. In der beispielhaften Konfiguration sp.minimum_with_tsl.config.xml ist so eine Vertrauensprofile mit der ID Test-TSLProfil eingerichtet.

    +
    Response
    +

    VerifyXMLSignatureRequest.TSL.resp.xml ist eine typische Response des SP Webservices auf den obigen Request. Sein Aufbau wird nachfolgend analysiert. Bitte beachten Sie, dass die dargestellte Response zur bessernen Lesbarkeit eingerückt und gekürzt wurde.

    +
    +<VerifyXMLSignatureResponse
    +  xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#"
    +  xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
    +  <SignerInfo>
    +    <dsig:X509Data>
    +      <dsig:X509SubjectName>T=DI,serialNumber=847206943023,givenName=Klaus,SN=Stranacher,
    +  CN=Klaus Stranacher,C=AT</dsig:X509SubjectName>
    +      <dsig:X509IssuerSerial>
    +        <dsig:X509IssuerName>CN=a-sign-premium-mobile-03,OU=a-sign-premium-mobile-03,
    +  O=A-Trust Ges. f. Sicherheitssysteme im elektr. Datenverkehr GmbH,C=AT</dsig:X509IssuerName>
    +        <dsig:X509SerialNumber>685117</dsig:X509SerialNumber>
    +      </dsig:X509IssuerSerial>
    +      <dsig:X509Certificate>...</dsig:X509Certificate>              
    +        <QualifiedCertificate/>
    <SecureSignatureCreationDevice Source="Certificate"/>
    <IssuerCountryCode>AT</IssuerCountryCode>
    </dsig:X509Data> + </SignerInfo> +
    +

    Die Response enthält zunächst in SignerInfo/dsig:X509Data Informationen über den Signator, die aus dem in der XML-Signatur enthaltenen Signatorzertifikat entnommen sind.

    +

    dsig:X509SubjectName ist immer vorhanden und enthält den Namen des Signators. dsig:X509IssuerSerial ist ebenfalls immer vorhanden und enthält den Namen des Austellers des Signatorzertifikats (dsig:X509IssuerName) sowie die Seriennummer des Zertifikats (dsig:X509SerialNumber). Auch dsig:X509Certificate ist ist immer vorhanden und enthält das Signatorzertifikat in base64 kodierter Form.

    +

    Optional vorhanden ist das inhaltslose Element QualifiedCertificate, und zwar dann, wenn es sich beim Signatorzertifikat um ein qualifiziertes Zertifikat handelt. Optional vorhanden ist das Element SecureSignatureCreationDevice, und zwar dann wenn die Signatur mittels einer sicheren Signaturerstellungseinheit erzeugt wurde. Das Attribut Source, gibt dabei an ob diese Information über die entsprechende TSL (Source=TSL) oder über das Zertifikat ermittelt wurde (Source=Certificate). Das weitere optionale Element IssuerCountryCode gibt dabei den Ländercode des Zertifizierungsdiensteanbieters an, der das Signaturzertifikat ausgestellt hat. Ebenfalls optional vorhanden (nicht in diesem Beispiel) ist schließlich das Element PublicAuthority, und zwar dann, wenn das Signatorzertifikat die österreichspezifische Zertifikatserweiterung Verwaltungseigenschaft aufweist. Ist in dieser Zertifikatserweiterung das Verwaltungskennzeichen mitkodiert, wird dieses Kennzeichen als Textinhalt des optionalen Elements PublicAuthority/Code geliefert.

    +
    +  <SignatureCheck>
    +    <Code>0</Code>
    +  </SignatureCheck>
    +
    +

    Anschließend an SignerInfo enthält die Response mit SignatureCheck/Code das Resultat der kryptographischen Prüfung der Signatur. In unserem Beispiel ist dort der Wert 0 enthalten, d. h. die Signatur konnte erfolgreich validiert werden. Für eine Übersicht der möglichen Kodes siehe Security-Layer Spezifikation.

    +
    +  <CertificateCheck>
    +    <Code>0</Code>
    +  </CertificateCheck>
    +
    +

    Abschließend enthält die Response mit CertificateCheck/Code das Resultat der Prüfung des Signatorzertifikats. Zunächst prüft MOA SP, ob ausgehend vom Signatorzertifikat eine Zertifikatskette zu einem im zugehörigen Vertrauensprofil konfigurierten sog. Trust Anchor gebildet werden kann. Gelingt dies, wird die Gültigkeit jedes Zertifikats dieser Kette überprüft. In unserem Beispiel enthält Code den Wert 0, d. h. MOA SP konnte die Kette bilden, und alle Zertifikate der Kette sind gültig. Für eine Übersicht der möglichen Kodes siehe Security-Layer Spezifikation.

    + +

    2.2 Webservice-Clients

    Abschnitt 2.1 bespricht eine Reihe von typischen XML-Requests, die über die Webservice-Schnittstelle an MOA SP/SS gesendet werden können, um entweder Signaturen zu erstellen (MOA SS) oder Signaturen zu prüfen (MOA SP). Dieser Abschnitt zeigt die Verwendung des prototypischen Webservice-Clients, der mit dieser Dokumentation zu MOA SP/SS ausgeliefert wird.

    2.2.1 Übersicht

    diff --git a/spss/handbook/pom.xml b/spss/handbook/pom.xml index 9caf5c181..5e476d5c1 100644 --- a/spss/handbook/pom.xml +++ b/spss/handbook/pom.xml @@ -3,14 +3,14 @@ MOA spss - 1.5.x + 2.0.x 4.0.0 MOA.spss.handbook moa-spss-handbook pom - 1.5 + 2.0 MOA SP/SS Handbook diff --git a/spss/pom.xml b/spss/pom.xml index 936c800e4..799286889 100644 --- a/spss/pom.xml +++ b/spss/pom.xml @@ -3,14 +3,14 @@ MOA MOA - 1.5.2 + 2.0.0 4.0.0 MOA spss pom - 1.5.x + 2.0.x MOA SP/SS diff --git a/spss/server/history.txt b/spss/server/history.txt index d2ea71698..651524419 100644 --- a/spss/server/history.txt +++ b/spss/server/history.txt @@ -1,5 +1,5 @@ ############## -1.5.2 +2.0.0 ############## - Signaturerstellung: @@ -12,7 +12,7 @@ - Angabe einer Whitelist um das Aufloesen externer Referenzen von den angegebenen Quellen zu aktivieren. - Libraries aktualisiert bzw. hinzugefuegt: iaik-moa: Version 1.5 - iaik-tsl Version 1.0.0 + iaik-tsl Version 1.0 ############## 1.5.1 @@ -20,7 +20,7 @@ - Sicherheitsupdates - Defaultmaessiges Deaktiveren des Aufloesens von externen Referenzen - - Angabe einer Blacklist in der Konfiguration um den Intranetbereich zu sch�tzen, so das Aufloesen externer Referenzen aktiviert wird + - Angabe einer Blacklist in der Konfiguration um den Intranetbereich zu schützen, so das Aufloesen externer Referenzen aktiviert wird - Update der Standard Trustprofile und Standard Konfigurationen - Standard Trustprofil "OfficialSignature" fuer Amtssignaturen hinzugefuegt - Libraries aktualisiert: diff --git a/spss/server/pom.xml b/spss/server/pom.xml index a78496017..b5e1b32c1 100644 --- a/spss/server/pom.xml +++ b/spss/server/pom.xml @@ -3,14 +3,14 @@ MOA spss - 1.5.x + 2.0.x 4.0.0 MOA.spss moa-spss pom - 1.5.x + 2.0.x MOA SP/SS Server diff --git a/spss/server/readme.update.txt b/spss/server/readme.update.txt index 4f40604bb..07d100272 100644 --- a/spss/server/readme.update.txt +++ b/spss/server/readme.update.txt @@ -1,11 +1,11 @@ ====================================================================== - Update einer bestehenden MOA-SPSS-Installation auf Version 1.5.2 + Update einer bestehenden MOA-SPSS-Installation auf Version 2.0.0 ====================================================================== Es gibt zwei Moeglichkeiten (im Folgenden als "Update Variante A" und "Update Variante B" bezeichnet), das Update von MOA-SPSS auf Version -1.5.2 durchzufuehren. Update Variante A geht dabei den Weg ueber eine +2.0.0 durchzufuehren. Update Variante A geht dabei den Weg ueber eine vorangestellte Neuinstallation, waehrend Variante B direkt eine bestehende Installation aktualisiert. @@ -16,7 +16,7 @@ JAVA_HOME bezeichnet das Wurzelverzeichnis der JDK-Installation CATALINA_HOME bezeichnet das Wurzelverzeichnis der Tomcat-Installation MOA_SPSS_INST bezeichnet das Verzeichnis, in das Sie die Datei -moa-spss-1.5.2.zip entpackt haben. +moa-spss-2.0.0.zip entpackt haben. ================= Update Variante A @@ -53,7 +53,7 @@ Update Variante B 1.) Erstellen Sie eine Sicherungskopie des kompletten Tomcat-Verzeichnisses Ihrer MOA-SPSS-Installation. -2.) Entpacken Sie die Datei "moa-spss-1.5.2.zip" in das Verzeichnis MOA_SPSS_INST. +2.) Entpacken Sie die Datei "moa-spss-2.0.0.zip" in das Verzeichnis MOA_SPSS_INST. 3.) Erstellen Sie eine Sicherungskopie aller "iaik*.jar"-Dateien im Verzeichnis JAVA_HOME\jre\lib\ext und loeschen Sie diese Dateien danach. diff --git a/spss/server/serverlib/pom.xml b/spss/server/serverlib/pom.xml index 5a2f001d4..88d3fb90d 100644 --- a/spss/server/serverlib/pom.xml +++ b/spss/server/serverlib/pom.xml @@ -2,14 +2,14 @@ MOA.spss moa-spss - 1.5.x + 2.0.x 4.0.0 MOA.spss.server moa-spss-lib jar - 1.5.2 + 2.0.0 MOA SP/SS API diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java index 07da0a998..3a004a81d 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/connector/TSLConnector.java @@ -1,6 +1,7 @@ package at.gv.egovernment.moa.spss.tsl.connector; import iaik.asn1.ObjectID; + import iaik.util._; import iaik.util.logging._l; import iaik.utils.RFC2253NameParser; diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java index 5456701c0..e06abe44d 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/timer/TSLUpdaterTimerTask.java @@ -46,7 +46,9 @@ public class TSLUpdaterTimerTask extends TimerTask { public void run() { try { + Logger.info("Start TSL Update"); update(); + Logger.info("Finished TSL Update"); } catch (TSLEngineDiedException e) { MessageProvider msg = MessageProvider.getInstance(); Logger.error(new LogMsg(msg.getMessage("tsl.00", null)), e); @@ -172,33 +174,33 @@ public class TSLUpdaterTimerTask extends TimerTask { // convert ArrayList to X509Certificate[] if (tsl_certs == null) { - Logger.error("No certificates from TSL imported."); - throw new TSLSearchException("No certificates from TSL imported."); + Logger.warn("No certificates from TSL imported."); + //throw new TSLSearchException("No certificates from TSL imported."); } + else { - X509Certificate[] addCertificatesTSL = new X509Certificate[tsl_certs.size()]; - Iterator itcert = tsl_certs.iterator(); - i = 0; - File f = null; - while(itcert.hasNext()) { - f = (File)itcert.next(); - FileInputStream fis = new FileInputStream(f); - X509Certificate cert = new X509Certificate(fis); - addCertificatesTSL[i] = cert; + X509Certificate[] addCertificatesTSL = new X509Certificate[tsl_certs.size()]; + Iterator itcert = tsl_certs.iterator(); + i = 0; + File f = null; + while(itcert.hasNext()) { + f = (File)itcert.next(); + FileInputStream fis = new FileInputStream(f); + X509Certificate cert = new X509Certificate(fis); + addCertificatesTSL[i] = cert; - i++; - fis.close(); - } + i++; + fis.close(); + } - Logger.debug(new LogMsg("Add " + addCertificatesTSL.length + " certificates.")); - storeUpdater.addCertificatesToTrustStores(addCertificatesTSL, tid); - storeUpdater.addCertificatesToCertStores(addCertificatesTSL, tid); + Logger.debug(new LogMsg("Add " + addCertificatesTSL.length + " certificates.")); + storeUpdater.addCertificatesToTrustStores(addCertificatesTSL, tid); + storeUpdater.addCertificatesToCertStores(addCertificatesTSL, tid); - Logger.debug(new LogMsg("Add " + addCertificates.length + " certificates.")); - storeUpdater.addCertificatesToTrustStores(addCertificates, tid); - storeUpdater.addCertificatesToCertStores(addCertificates, tid); - - + Logger.debug(new LogMsg("Add " + addCertificates.length + " certificates.")); + storeUpdater.addCertificatesToTrustStores(addCertificates, tid); + storeUpdater.addCertificatesToCertStores(addCertificates, tid); + } } } } diff --git a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/TSLImportFromFileContext.java b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/TSLImportFromFileContext.java index f0dbd779e..492d10eda 100644 --- a/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/TSLImportFromFileContext.java +++ b/spss/server/serverlib/src/main/java/at/gv/egovernment/moa/spss/tsl/utils/TSLImportFromFileContext.java @@ -1,6 +1,7 @@ package at.gv.egovernment.moa.spss.tsl.utils; import iaik.util.logging._l; + import iaik.util.logging.Log.MultiThreadLoggingGroup; import iaik.utils.RFC2253NameParserException; import iaik.utils.Util; @@ -15,6 +16,7 @@ import iaik.xml.crypto.tsl.TSLOpenURIException; import iaik.xml.crypto.tsl.TSLThreadContext; import iaik.xml.crypto.tsl.ValidationFixupFilter; import iaik.xml.crypto.tsl.ValidationFixupFilter.AttributeValueFixup; +import iaik.xml.crypto.tsl.ValidationFixupFilter.DeleteAttrFixup; import iaik.xml.crypto.tsl.ValidationFixupFilter.ElementStringValueFixup; import iaik.xml.crypto.tsl.ValidationFixupFilter.FixedSaxLevelValidationExcption; import iaik.xml.crypto.tsl.ValidationFixupFilter.Fixup; @@ -97,44 +99,34 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF trustAnchorsWrongOnEuTsl_; public TSLImportFromFileContext( - Countries expectedTerritory, - URL url, - Number otherTslPointerId, - String workingdirectory, - boolean sqlMultithreaded, - boolean throwExceptions, - boolean logExceptions, - boolean throwWarnings, - boolean logWarnings, - boolean nullRedundancies, - String baseuri, - Map > trustAnchorsWrongOnEuTsl, - TSLThreadContext parentContext) { - super( - expectedTerritory, - url, - otherTslPointerId, - workingdirectory, - sqlMultithreaded, - throwExceptions, - logExceptions, - throwWarnings, - logWarnings, - nullRedundancies, - parentContext); - baseuri_ = baseuri; - trustAnchorsWrongOnEuTsl_ = trustAnchorsWrongOnEuTsl; - } - - public List getErrorsAndWarnings() { - List errorsAndWarnings = new ArrayList(); - errorsAndWarnings.addAll(this.fatals_); - errorsAndWarnings.addAll(this.faildTransactions_); - errorsAndWarnings.addAll(this.warnings_); - - return errorsAndWarnings; - } - + Countries expectedTerritory, + URL url, + Number otherTslPointerId, + String workingdirectory, + boolean sqlMultithreaded, + boolean throwExceptions, + boolean logExceptions, + boolean throwWarnings, + boolean logWarnings, + boolean nullRedundancies, + String baseuri, + Map > trustAnchorsWrongOnEuTsl, + TSLThreadContext parentContext) { + super( + expectedTerritory, + url, + otherTslPointerId, + workingdirectory, + sqlMultithreaded, + throwExceptions, + logExceptions, + throwWarnings, + logWarnings, + nullRedundancies, + parentContext); + baseuri_ = baseuri; + trustAnchorsWrongOnEuTsl_ = trustAnchorsWrongOnEuTsl; + } /* (non-Javadoc) * @see iaik.xml.crypto.tsl.TSLImportFromFileContext#getbaseURI() */ @@ -142,67 +134,80 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF public String getbaseURI() { return this.baseuri_; } - + + + + //@Override - protected RuntimeException wrapException(Throwable t, Locator l, Mitigation m) { - return super.wrapException(t, l, m); - } + protected RuntimeException wrapException(Throwable t, Locator l, Mitigation m) { + return super.wrapException(t, l, m); + } @Override - public synchronized void throwException(Throwable e) { + public + synchronized void throwException(Throwable e) { if (e instanceof TSLValidationException) { // we do not throw dom validation errors for testing // and just collect them wrapException(e); - } else if (e instanceof TSLVerificationException) { + + boolean corrected = false; // we do not throw verification errors for testing // and just collect them - if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NO_TSL_SIGNATURE - .getClass().getName(), "true")) - && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NO_TSL_SIGNATURE) { - - //TSL with no signature are ignored!!!! - l.warn("TSL IS NOT SIGNED! " - + this.expectedTerritory_.name() + " TSL ignored."); - } - - if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_REFERENCE_IN_TSL_SIGNATURE - .getClass().getName(), "true")) - && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_REFERENCE_IN_TSL_SIGNATURE) { - ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); - } - - if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_TRANSFORMS_IN_TSL_SIGNATURE - .getClass().getName(), "true")) - && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_TRANSFORMS_IN_TSL_SIGNATURE) { - ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); - } - - if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_TRANSFORM_IN_TSL_SIGNATURE - .getClass().getName(), "true")) - && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_TRANSFORM_IN_TSL_SIGNATURE) { - ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); - } - - if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_C14N_IN_TSL_SIGNATURE - .getClass().getName(), "true")) - && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_C14N_IN_TSL_SIGNATURE) { - ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); - } +// // NEVER DO THIS! unless you want to import TSLs without signatures. +// if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NO_TSL_SIGNATURE +// .getClass().getName(), "true")) +// && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NO_TSL_SIGNATURE) { +// ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); +// } +// +// if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_REFERENCE_IN_TSL_SIGNATURE +// .getClass().getName(), "true")) +// && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_REFERENCE_IN_TSL_SIGNATURE) { +// ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); +// } - wrapException(e); +// if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_TRANSFORMS_IN_TSL_SIGNATURE +// .getClass().getName(), "true")) +// && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_TRANSFORMS_IN_TSL_SIGNATURE) { +// ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); +// +// corrected = true; +// } +// +// +// if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_TRANSFORM_IN_TSL_SIGNATURE +// .getClass().getName(), "true")) +// && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_TRANSFORM_IN_TSL_SIGNATURE) { +// ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); +// +// corrected = true; +// } +// +// if (Boolean.valueOf(_.getSysProperty(TSLSecurityException.Type.NON_CONFORMANT_C14N_IN_TSL_SIGNATURE +// .getClass().getName(), "true")) +// && ((TSLVerificationException) e).getType() == TSLSecurityException.Type.NON_CONFORMANT_C14N_IN_TSL_SIGNATURE) { +// ((TSLVerificationException) e).setMitigation(Mitigation.IGNORED); +// +// corrected = true; +// } +// +// if (corrected) +// wrapException(e); +// else +// super.throwException(e); + + super.throwException(e); } else if (e instanceof FileNotFoundException) { // we do not stop and continue processing wrapException(e); - } else if (e instanceof IllegalArgumentException) { // we do not stop and continue processing wrapException(e); - } else { // all other errors are treated as per default super.throwException(e); @@ -221,9 +226,6 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF if( e instanceof FixedSaxLevelValidationExcption && enclosingMethod.getDeclaringClass().equals(ValidationFixupFilter.class)){ - - - wrapException(e, ((LocatorAspect) e).getLocator(), new FixedValidationMitigation("Performed SAX Level Fixup.")); @@ -247,7 +249,7 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF if (parameters[0] instanceof DOMError) { DOMError domError = (DOMError) parameters[0]; - l.info(""+domError.getRelatedData()); + _l.warn(""+domError.getRelatedData()); // domError.getRelatedData().getClass().getField("") @@ -308,6 +310,7 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF } }); return mitigatedResult; + } } @@ -378,11 +381,43 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF } } - l.error("Ignoring download error using old: " + parameters[0], null); + _l.err("Ignoring download error using old: " + parameters[0], null); wrapException(e); return parameters[1]; } +// if ( +// expectedTerritory_ == Countries.PL &&( +// (e.getCause() instanceof java.io.EOFException || +// e.getCause() instanceof iaik.security.ssl.SSLException) && +// parameters[0] instanceof URL && +// ((URL)parameters[0]).getProtocol().equalsIgnoreCase("https") +// )){ +// File f = null; +// System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", "true"); +// TLS.register("TLSv1"); +// try { +// f = (File) enclosingMethod.invoke(thisObject, parameters); +// } catch (IllegalAccessException e1) { +// wrapException(e1); +// } catch (InvocationTargetException e1) { +// wrapException(e1); +// } +// +// // System.setProperty("sun.security.ssl.allowUnsafeRenegotiation", null); +// TLS.register(); +// +// if (f != null){ +// wrapException(e, null, new Mitigation() { +// @Override +// public String getReport() { +// return "Trying TLSv1 and sun.security.ssl.allowUnsafeRenegotiation=true"; +// } +// }); +// return f; +// } +// } + if ( e instanceof TSLSecurityException && enclosingMethod.getDeclaringClass().equals(TSLContext.class) && @@ -406,14 +441,14 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF wrapException(e1); } wrapException(e, getLocator(), - new iaik.xml.crypto.tsl.ex.SeverityAspect.Mitigation(){ - @Override - public String getReport() { - return "make an exception for " + expectedTerritory_ + " who have the wrong certificate in " + - "the EU TSL and allow the certificate " + - parameters[1]; - } - }); + new iaik.xml.crypto.tsl.ex.SeverityAspect.Mitigation(){ + @Override + public String getReport() { + return "make an exception for " + expectedTerritory_ + " who have the wrong certificate in " + + "the EU TSL and allow the certificate " + + parameters[1]; + } + }); return null; } X509Certificate crt = (X509Certificate)parameters[1]; @@ -530,47 +565,45 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF } } -// //TODO: CONSIDER, IF WE REALLY WANT THIS PART OF CODE! -// //ugly hack to accept a certificate which uses a crazy X509SubjectName!! -// if ( expectedTerritory_ == Countries.DK && -// e instanceof KeySelectorException && -// parameters[0] instanceof X509DataImpl){ -// if (e.getMessage().equals("KeyInfo X509SubjectName (CN=Adam Arndt Digst,serialNumber=CVR:34051178-RID:25902029,O=Digitaliseringsstyrelsen // CVR:34051178,C=DK) does not match SubjectDN (serialNumber=CVR:34051178-RID:25902029+CN=Adam Arndt Digst,O=Digitaliseringsstyrelsen // CVR:34051178,C=DK) of KeyInfo X509Certificate.\n"+ -// "Any X509IssuerSerial, X509SKI, and X509SubjectName elements that appear MUST refer to the certificate or certificates containing the validation key.")) { -// -// X509DataImpl x509DataImpl = (X509DataImpl) parameters[0]; -// -// Node child = x509DataImpl.getNode().getFirstChild().getNextSibling(); -// Node child1 = x509DataImpl.getNode().getFirstChild(); -// -// x509DataImpl.getNode().removeChild(child); -// x509DataImpl.getNode().removeChild(child1); -// -// -// parameters[0] = (X509Data) x509DataImpl -// -// Object mitigatedResult = null; -// try { -// -// mitigatedResult = enclosingMethod.invoke(thisObject, parameters); -// } catch (IllegalAccessException e1) { -// wrapException(e1); -// } catch (InvocationTargetException e1) { -// wrapException(e1); -// } -// -// if (mitigatedResult != null){ -// wrapException(e, null, new Mitigation(null) { -// @Override -// public String getReport() { -// return "Deleted wrong X509SubjectName from XMLDSIG Signature."; -// } -// }); -// return mitigatedResult; -// } -// } -// } - + if ( expectedTerritory_ == Countries.DK && + e instanceof KeySelectorException && + parameters[0] instanceof X509DataImpl){ + if (e.getMessage().equals("KeyInfo X509SubjectName (CN=Adam Arndt Digst,serialNumber=CVR:34051178-RID:25902029,O=Digitaliseringsstyrelsen // CVR:34051178,C=DK) does not match SubjectDN (serialNumber=CVR:34051178-RID:25902029+CN=Adam Arndt Digst,O=Digitaliseringsstyrelsen // CVR:34051178,C=DK) of KeyInfo X509Certificate.\n"+ + "Any X509IssuerSerial, X509SKI, and X509SubjectName elements that appear MUST refer to the certificate or certificates containing the validation key.")) { + + X509DataImpl x509DataImpl = (X509DataImpl) parameters[0]; + + ListIterator li = x509DataImpl.getContent().listIterator(); + li.next(); + String sn = (String) li.next(); + + _l.err(sn, null); + + System.exit(1); + + Object mitigatedResult = null; + try { + + mitigatedResult = enclosingMethod.invoke(thisObject, parameters); + } catch (IllegalAccessException e1) { + wrapException(e1); + } catch (InvocationTargetException e1) { + wrapException(e1); + } + + if (mitigatedResult != null){ + wrapException(e, null, new iaik.xml.crypto.tsl.ex.SeverityAspect.Mitigation() { + @Override + public String getReport() { + return "Deleted wrong X509SubjectName from XMLDSIG Signature."; + } + }); + return mitigatedResult; + + } + } + } + } else { if (e instanceof MitigatedTSLSecurityException){ @@ -578,7 +611,6 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF // and collect them wrapException(e); return null; - } else if (e instanceof FixedSaxLevelValidationExcption) { // we allow to mitigate Sax Level Fixup for testing // and collect them @@ -607,7 +639,11 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF if(expectedTerritory_ == Countries.EL){ //fix the whitespace in Greece TSL status = status.trim(); - } + } + if (status != null && status.startsWith("http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/")) { + status = status.substring("http://uri.etsi.org/TrstSvc/TrustedList/Svcstatus/".length()); + } + return super.compressStatus(status); } @@ -625,6 +661,37 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF @Override public iaik.xml.crypto.tsl.ValidationFixupFilter.Fixup getSaxLevelValidationFixup(SAXParseException e) { + if (expectedTerritory_ == Countries.AT){ + if (e.getMessage().equals("cvc-type.3.1.1: Element 'tsl:URI' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to 'http://www.w3.org/2001/XMLSchema-instance' and whose [local name] is one of 'type', 'nil', 'schemaLocation' or 'noNamespaceSchemaLocation'. However, the attribute, 'xml:lang' was found.")){ + return new DeleteAttrFixup("http://www.w3.org/XML/1998/namespace","lang", e, this); + } + } + + if (expectedTerritory_ == Countries.CZ){ + if (e.getMessage().equals("cvc-type.3.1.1: Element 'tsl:URI' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to 'http://www.w3.org/2001/XMLSchema-instance' and whose [local name] is one of 'type', 'nil', 'schemaLocation' or 'noNamespaceSchemaLocation'. However, the attribute, 'xml:lang' was found.")){ + return new DeleteAttrFixup("http://www.w3.org/XML/1998/namespace","lang", e, this); + } + } + + if (expectedTerritory_ == Countries.FR){ + if (e.getMessage().equals("cvc-type.3.1.1: Element 'tsl:URI' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to 'http://www.w3.org/2001/XMLSchema-instance' and whose [local name] is one of 'type', 'nil', 'schemaLocation' or 'noNamespaceSchemaLocation'. However, the attribute, 'xml:lang' was found.")){ + return new DeleteAttrFixup("http://www.w3.org/XML/1998/namespace","lang", e, this); + } + } + + if (expectedTerritory_ == Countries.NO){ + if (e.getMessage().equals("cvc-type.3.1.1: Element 'tsl:URI' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to 'http://www.w3.org/2001/XMLSchema-instance' and whose [local name] is one of 'type', 'nil', 'schemaLocation' or 'noNamespaceSchemaLocation'. However, the attribute, 'xml:lang' was found.")){ + return new DeleteAttrFixup("http://www.w3.org/XML/1998/namespace","lang", e, this); + } + } + + if (expectedTerritory_ == Countries.SK){ + if (e.getMessage().equals("cvc-type.3.1.1: Element 'tsl:URI' is a simple type, so it cannot have attributes, excepting those whose namespace name is identical to 'http://www.w3.org/2001/XMLSchema-instance' and whose [local name] is one of 'type', 'nil', 'schemaLocation' or 'noNamespaceSchemaLocation'. However, the attribute, 'xml:lang' was found.")){ + return new DeleteAttrFixup("http://www.w3.org/XML/1998/namespace","lang", e, this); + } + } + + if (expectedTerritory_ == Countries.ES && getDownloadLocation().toString().contains(".es/")){ if (e.getMessage().equals("cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'tslx:CertSubjectDNAttributeType'.")){ return new LocalNameFixup("CertSubjectDNAttributeType","CertSubjectDNAttribute",e, this); @@ -734,7 +801,7 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF String msg = e.getMessage(); - l.info(msg); + _l.info(msg); return( msg.startsWith("["+SQLiteErrorCode.SQLITE_CONSTRAINT.name()+"]") && msg.contains("column " + DbTables.TSLDownload.C.rawHash + " is not unique") @@ -748,7 +815,7 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF @Override protected long howLongWaitForThreads() { // TODO Auto-generated method stub - return 10000; + return 100000; } @Override @@ -768,7 +835,7 @@ public class TSLImportFromFileContext extends iaik.xml.crypto.tsl.TSLImportFromF synchronized (log) { parentContext_.print("<" + ncName + " state=\"" + currentThread.getState() + "\" " + " id=\"" + currentThread.getId() + "\">\n" + log.toString() + "\n"); + + ncName + ">" + _.LB); parentContext_.flushLog(); log.setLength(0); } diff --git a/spss/server/serverws/.settings/org.eclipse.wst.common.component b/spss/server/serverws/.settings/org.eclipse.wst.common.component index 5efe131f3..ffe4d38a0 100644 --- a/spss/server/serverws/.settings/org.eclipse.wst.common.component +++ b/spss/server/serverws/.settings/org.eclipse.wst.common.component @@ -2,10 +2,10 @@ - + uses - + uses diff --git a/spss/server/serverws/pom.xml b/spss/server/serverws/pom.xml index a99a573c1..2a7467146 100644 --- a/spss/server/serverws/pom.xml +++ b/spss/server/serverws/pom.xml @@ -3,14 +3,14 @@ MOA.spss moa-spss - 1.5.x + 2.0.x 4.0.0 MOA.spss.server moa-spss-ws war - 1.5.2 + 2.0.0 MOA SP/SS WebService diff --git a/spss/server/tools/pom.xml b/spss/server/tools/pom.xml index 19d72a380..48e0a998c 100644 --- a/spss/server/tools/pom.xml +++ b/spss/server/tools/pom.xml @@ -2,14 +2,14 @@ MOA.spss moa-spss - 1.5.x + 2.0.x 4.0.0 MOA.spss.server moa-spss-tools jar - 1.5.2 + 2.0.0 MOA SP/SS Tools -- cgit v1.2.3 From e6144cfe09bb148638911660eeb492fee7ab8079 Mon Sep 17 00:00:00 2001 From: Florian Reimair Date: Thu, 20 Mar 2014 11:43:22 +0100 Subject: fixed serializable issues in stork2-commons --- id/server/SamlEngine-VIDP/pom.xml | 201 -- .../src/main/java/META-INF/MANIFEST.MF | 3 - .../java/eu/stork/peps/auth/engine/SAMLEngine.java | 415 --- .../eu/stork/peps/auth/engine/SAMLEngineUtils.java | 833 ----- .../eu/stork/peps/auth/engine/STORKSAMLEngine.java | 3744 -------------------- .../stork/peps/auth/engine/X509PrincipalUtil.java | 69 - .../auth/engine/core/AuthenticationAttributes.java | 57 - .../peps/auth/engine/core/CitizenCountryCode.java | 56 - .../auth/engine/core/CustomAttributeQuery.java | 51 - .../engine/core/CustomRequestAbstractType.java | 176 - .../peps/auth/engine/core/EIDCrossBorderShare.java | 58 - .../peps/auth/engine/core/EIDCrossSectorShare.java | 56 - .../peps/auth/engine/core/EIDSectorShare.java | 57 - .../stork/peps/auth/engine/core/QAAAttribute.java | 63 - .../peps/auth/engine/core/RequestedAttribute.java | 140 - .../peps/auth/engine/core/RequestedAttributes.java | 51 - .../eu/stork/peps/auth/engine/core/SAMLCore.java | 98 - .../peps/auth/engine/core/SAMLEngineSignI.java | 88 - .../stork/peps/auth/engine/core/SPApplication.java | 56 - .../eu/stork/peps/auth/engine/core/SPCountry.java | 56 - .../java/eu/stork/peps/auth/engine/core/SPID.java | 56 - .../stork/peps/auth/engine/core/SPInformation.java | 56 - .../stork/peps/auth/engine/core/SPInstitution.java | 56 - .../eu/stork/peps/auth/engine/core/SPSector.java | 56 - .../stork/peps/auth/engine/core/STORKSAMLCore.java | 508 --- .../engine/core/VIDPAuthenticationAttributes.java | 72 - .../core/impl/AuthenticationAttributesBuilder.java | 56 - .../core/impl/AuthenticationAttributesImpl.java | 109 - .../impl/AuthenticationAttributesMarshaller.java | 27 - .../impl/AuthenticationAttributesUnmarshaller.java | 54 - .../core/impl/CitizenCountryCodeBuilder.java | 50 - .../engine/core/impl/CitizenCountryCodeImpl.java | 82 - .../core/impl/CitizenCountryCodeMarshaller.java | 45 - .../core/impl/CitizenCountryCodeUnmarshaller.java | 41 - .../core/impl/CustomAttributeQueryBuilder.java | 26 - .../engine/core/impl/CustomAttributeQueryImpl.java | 65 - .../core/impl/CustomAttributeQueryMarshaller.java | 50 - .../impl/CustomAttributeQueryUnmarshaller.java | 114 - .../core/impl/EIDCrossBorderShareBuilder.java | 52 - .../engine/core/impl/EIDCrossBorderShareImpl.java | 87 - .../core/impl/EIDCrossBorderShareMarshaller.java | 47 - .../core/impl/EIDCrossBorderShareUnmarshaller.java | 43 - .../core/impl/EIDCrossSectorShareBuilder.java | 52 - .../engine/core/impl/EIDCrossSectorShareImpl.java | 89 - .../core/impl/EIDCrossSectorShareMarshaller.java | 46 - .../core/impl/EIDCrossSectorShareUnmarshaller.java | 47 - .../engine/core/impl/EIDSectorShareBuilder.java | 51 - .../auth/engine/core/impl/EIDSectorShareImpl.java | 85 - .../engine/core/impl/EIDSectorShareMarshaller.java | 46 - .../core/impl/EIDSectorShareUnmarshaller.java | 47 - .../auth/engine/core/impl/QAAAttributeBuilder.java | 52 - .../auth/engine/core/impl/QAAAttributeImpl.java | 84 - .../engine/core/impl/QAAAttributeMarshaller.java | 45 - .../engine/core/impl/QAAAttributeUnmarshaller.java | 41 - .../core/impl/RequestedAttributeBuilder.java | 54 - .../engine/core/impl/RequestedAttributeImpl.java | 220 -- .../core/impl/RequestedAttributeMarshaller.java | 89 - .../core/impl/RequestedAttributeUnmarshaller.java | 96 - .../core/impl/RequestedAttributesBuilder.java | 54 - .../engine/core/impl/RequestedAttributesImpl.java | 95 - .../core/impl/RequestedAttributesMarshaller.java | 33 - .../core/impl/RequestedAttributesUnmarshaller.java | 52 - .../engine/core/impl/SPApplicationBuilder.java | 51 - .../auth/engine/core/impl/SPApplicationImpl.java | 84 - .../engine/core/impl/SPApplicationMarshaller.java | 46 - .../core/impl/SPApplicationUnmarshaller.java | 42 - .../auth/engine/core/impl/SPCountryBuilder.java | 52 - .../peps/auth/engine/core/impl/SPCountryImpl.java | 82 - .../auth/engine/core/impl/SPCountryMarshaller.java | 45 - .../engine/core/impl/SPCountryUnmarshaller.java | 42 - .../peps/auth/engine/core/impl/SPIDBuilder.java | 50 - .../stork/peps/auth/engine/core/impl/SPIDImpl.java | 82 - .../peps/auth/engine/core/impl/SPIDMarshaller.java | 45 - .../auth/engine/core/impl/SPIDUnmarshaller.java | 41 - .../engine/core/impl/SPInformationBuilder.java | 41 - .../auth/engine/core/impl/SPInformationImpl.java | 110 - .../engine/core/impl/SPInformationMarshaller.java | 33 - .../core/impl/SPInformationUnmarshaller.java | 52 - .../engine/core/impl/SPInstitutionBuilder.java | 51 - .../auth/engine/core/impl/SPInstitutionImpl.java | 84 - .../engine/core/impl/SPInstitutionMarshaller.java | 46 - .../core/impl/SPInstitutionUnmarshaller.java | 41 - .../auth/engine/core/impl/SPSectorBuilder.java | 50 - .../peps/auth/engine/core/impl/SPSectorImpl.java | 84 - .../auth/engine/core/impl/SPSectorMarshaller.java | 45 - .../engine/core/impl/SPSectorUnmarshaller.java | 42 - .../stork/peps/auth/engine/core/impl/SignHW.java | 468 --- .../auth/engine/core/impl/SignModuleFactory.java | 64 - .../stork/peps/auth/engine/core/impl/SignP12.java | 565 --- .../stork/peps/auth/engine/core/impl/SignSW.java | 527 --- .../impl/VIDPAuthenticationAttributesBuilder.java | 41 - .../impl/VIDPAuthenticationAttributesImpl.java | 132 - .../VIDPAuthenticationAttributesMarshaller.java | 33 - .../VIDPAuthenticationAttributesUnmarshaller.java | 55 - .../peps/auth/engine/core/impl/package-info.java | 19 - .../stork/peps/auth/engine/core/package-info.java | 19 - .../validator/CustomAttributeQueryValidator.java | 69 - .../core/validator/ExtensionsSchemaValidator.java | 61 - .../MultipleAssertionResponseValidator.java | 80 - .../validator/QAAAttributeSchemaValidator.java | 65 - .../auth/engine/core/validator/package-info.java | 19 - .../eu/stork/peps/auth/engine/package-info.java | 19 - .../peps/configuration/ConfigurationCreator.java | 142 - .../peps/configuration/ConfigurationEngine.java | 69 - .../peps/configuration/ConfigurationReader.java | 234 -- .../peps/configuration/ConfigurationSingleton.java | 74 - .../stork/peps/configuration/InstanceEngine.java | 70 - .../eu/stork/peps/configuration/package-info.java | 19 - .../stork/peps/exceptions/SAMLEngineException.java | 57 - .../peps/exceptions/STORKSAMLEngineException.java | 135 - .../STORKSAMLEngineRuntimeException.java | 56 - .../eu/stork/peps/exceptions/package-info.java | 19 - .../eu/stork/peps/test/simple/SSETestUtils.java | 173 - .../eu/stork/peps/test/simple/SimpleBaseTest.java | 64 - .../test/simple/StorkAttrQueryRequestTest.java | 864 ----- .../test/simple/StorkAttrQueryResponseTest.java | 1085 ------ .../peps/test/simple/StorkAuthRequestTest.java | 968 ----- .../peps/test/simple/StorkLogoutRequestTest.java | 89 - .../peps/test/simple/StorkLogoutResponseTest.java | 142 - .../peps/test/simple/StorkNewResponseTest.java | 533 --- .../stork/peps/test/simple/StorkResponseTest.java | 935 ----- .../eu/stork/peps/test/simple/package-info.java | 20 - .../src/test/resources/SamlEngine.xml | 67 - .../src/test/resources/SignModule_Conf0.xml | 21 - .../src/test/resources/SignModule_Conf1.xml | 12 - .../src/test/resources/SignModule_Conf2.xml | 12 - .../src/test/resources/SignModule_Conf3.xml | 12 - .../src/test/resources/SignModule_P11.xml | 11 - .../src/test/resources/StorkSamlEngine_Conf0.xml | 87 - .../src/test/resources/StorkSamlEngine_Conf1.xml | 85 - .../src/test/resources/StorkSamlEngine_Conf2.xml | 60 - .../src/test/resources/StorkSamlEngine_Conf3.xml | 57 - .../eu/stork/STORKSAMLEngine/AttrQueryRequest.xml | 82 - .../stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml | 15 - .../STORKSAMLEngine/AttrQueryRequestTagDelete.xml | 66 - .../eu/stork/STORKSAMLEngine/AttrQueryResponse.xml | 124 - .../data/eu/stork/STORKSAMLEngine/AuthnRequest.xml | 72 - .../STORKSAMLEngine/AuthnRequestTagDelete.xml | 47 - .../AuthnRequestTagDeleteEncoded.xml | 47 - .../src/test/resources/logback-test.xml | 21 - .../SamlEngine-VIDP/src/test/resources/p11Conf.cfg | 24 - .../target/SamlEngine-1.4.0-sources.jar | Bin 152332 -> 0 bytes .../eu/stork/peps/auth/engine/SAMLEngine.class | Bin 11791 -> 0 bytes .../stork/peps/auth/engine/SAMLEngineUtils.class | Bin 19412 -> 0 bytes .../stork/peps/auth/engine/STORKSAMLEngine.class | Bin 71959 -> 0 bytes .../stork/peps/auth/engine/X509PrincipalUtil.class | Bin 1990 -> 0 bytes .../engine/core/AuthenticationAttributes.class | Bin 1108 -> 0 bytes .../peps/auth/engine/core/CitizenCountryCode.class | Bin 955 -> 0 bytes .../auth/engine/core/CustomAttributeQuery.class | Bin 1100 -> 0 bytes .../engine/core/CustomRequestAbstractType.class | Bin 2341 -> 0 bytes .../auth/engine/core/EIDCrossBorderShare.class | Bin 961 -> 0 bytes .../auth/engine/core/EIDCrossSectorShare.class | Bin 962 -> 0 bytes .../peps/auth/engine/core/EIDSectorShare.class | Bin 907 -> 0 bytes .../stork/peps/auth/engine/core/QAAAttribute.class | Bin 1033 -> 0 bytes .../peps/auth/engine/core/RequestedAttribute.class | Bin 1728 -> 0 bytes .../auth/engine/core/RequestedAttributes.class | Bin 1010 -> 0 bytes .../eu/stork/peps/auth/engine/core/SAMLCore.class | Bin 2649 -> 0 bytes .../peps/auth/engine/core/SAMLEngineSignI.class | Bin 564 -> 0 bytes .../peps/auth/engine/core/SPApplication.class | Bin 923 -> 0 bytes .../eu/stork/peps/auth/engine/core/SPCountry.class | Bin 899 -> 0 bytes .../eu/stork/peps/auth/engine/core/SPID.class | Bin 871 -> 0 bytes .../peps/auth/engine/core/SPInformation.class | Bin 968 -> 0 bytes .../peps/auth/engine/core/SPInstitution.class | Bin 923 -> 0 bytes .../eu/stork/peps/auth/engine/core/SPSector.class | Bin 893 -> 0 bytes .../peps/auth/engine/core/STORKSAMLCore.class | Bin 7839 -> 0 bytes .../engine/core/VIDPAuthenticationAttributes.class | Bin 1241 -> 0 bytes .../impl/AuthenticationAttributesBuilder.class | Bin 1624 -> 0 bytes .../core/impl/AuthenticationAttributesImpl.class | Bin 2512 -> 0 bytes .../impl/AuthenticationAttributesMarshaller.class | Bin 436 -> 0 bytes .../AuthenticationAttributesUnmarshaller.class | Bin 1116 -> 0 bytes .../core/impl/CitizenCountryCodeBuilder.class | Bin 1576 -> 0 bytes .../engine/core/impl/CitizenCountryCodeImpl.class | Bin 1659 -> 0 bytes .../core/impl/CitizenCountryCodeMarshaller.class | Bin 1057 -> 0 bytes .../core/impl/CitizenCountryCodeUnmarshaller.class | Bin 879 -> 0 bytes .../core/impl/CustomAttributeQueryBuilder.class | Bin 1484 -> 0 bytes .../core/impl/CustomAttributeQueryImpl.class | Bin 1938 -> 0 bytes .../core/impl/CustomAttributeQueryMarshaller.class | Bin 1992 -> 0 bytes .../impl/CustomAttributeQueryUnmarshaller.class | Bin 4815 -> 0 bytes .../core/impl/EIDCrossBorderShareBuilder.class | Bin 1584 -> 0 bytes .../engine/core/impl/EIDCrossBorderShareImpl.class | Bin 1667 -> 0 bytes .../core/impl/EIDCrossBorderShareMarshaller.class | Bin 1061 -> 0 bytes .../impl/EIDCrossBorderShareUnmarshaller.class | Bin 883 -> 0 bytes .../core/impl/EIDCrossSectorShareBuilder.class | Bin 1593 -> 0 bytes .../engine/core/impl/EIDCrossSectorShareImpl.class | Bin 1667 -> 0 bytes .../core/impl/EIDCrossSectorShareMarshaller.class | Bin 1061 -> 0 bytes .../impl/EIDCrossSectorShareUnmarshaller.class | Bin 879 -> 0 bytes .../engine/core/impl/EIDSectorShareBuilder.class | Bin 1544 -> 0 bytes .../auth/engine/core/impl/EIDSectorShareImpl.class | Bin 1627 -> 0 bytes .../core/impl/EIDSectorShareMarshaller.class | Bin 1026 -> 0 bytes .../core/impl/EIDSectorShareUnmarshaller.class | Bin 844 -> 0 bytes .../engine/core/impl/QAAAttributeBuilder.class | Bin 1528 -> 0 bytes .../auth/engine/core/impl/QAAAttributeImpl.class | Bin 1595 -> 0 bytes .../engine/core/impl/QAAAttributeMarshaller.class | Bin 1011 -> 0 bytes .../core/impl/QAAAttributeUnmarshaller.class | Bin 829 -> 0 bytes .../core/impl/RequestedAttributeBuilder.class | Bin 1576 -> 0 bytes .../engine/core/impl/RequestedAttributeImpl.class | Bin 3478 -> 0 bytes .../core/impl/RequestedAttributeMarshaller.class | Bin 2750 -> 0 bytes .../core/impl/RequestedAttributeUnmarshaller.class | Bin 2599 -> 0 bytes .../core/impl/RequestedAttributesBuilder.class | Bin 1584 -> 0 bytes .../engine/core/impl/RequestedAttributesImpl.class | Bin 2217 -> 0 bytes .../core/impl/RequestedAttributesMarshaller.class | Bin 425 -> 0 bytes .../impl/RequestedAttributesUnmarshaller.class | Bin 1083 -> 0 bytes .../engine/core/impl/SPApplicationBuilder.class | Bin 1536 -> 0 bytes .../auth/engine/core/impl/SPApplicationImpl.class | Bin 1619 -> 0 bytes .../engine/core/impl/SPApplicationMarshaller.class | Bin 1022 -> 0 bytes .../core/impl/SPApplicationUnmarshaller.class | Bin 844 -> 0 bytes .../auth/engine/core/impl/SPCountryBuilder.class | Bin 1504 -> 0 bytes .../peps/auth/engine/core/impl/SPCountryImpl.class | Bin 1587 -> 0 bytes .../engine/core/impl/SPCountryMarshaller.class | Bin 994 -> 0 bytes .../engine/core/impl/SPCountryUnmarshaller.class | Bin 816 -> 0 bytes .../peps/auth/engine/core/impl/SPIDBuilder.class | Bin 1464 -> 0 bytes .../peps/auth/engine/core/impl/SPIDImpl.class | Bin 1547 -> 0 bytes .../auth/engine/core/impl/SPIDMarshaller.class | Bin 959 -> 0 bytes .../auth/engine/core/impl/SPIDUnmarshaller.class | Bin 781 -> 0 bytes .../engine/core/impl/SPInformationBuilder.class | Bin 1569 -> 0 bytes .../auth/engine/core/impl/SPInformationImpl.class | Bin 2304 -> 0 bytes .../engine/core/impl/SPInformationMarshaller.class | Bin 407 -> 0 bytes .../core/impl/SPInformationUnmarshaller.class | Bin 989 -> 0 bytes .../engine/core/impl/SPInstitutionBuilder.class | Bin 1536 -> 0 bytes .../auth/engine/core/impl/SPInstitutionImpl.class | Bin 1619 -> 0 bytes .../engine/core/impl/SPInstitutionMarshaller.class | Bin 1022 -> 0 bytes .../core/impl/SPInstitutionUnmarshaller.class | Bin 844 -> 0 bytes .../auth/engine/core/impl/SPSectorBuilder.class | Bin 1496 -> 0 bytes .../peps/auth/engine/core/impl/SPSectorImpl.class | Bin 1272 -> 0 bytes .../auth/engine/core/impl/SPSectorMarshaller.class | Bin 987 -> 0 bytes .../engine/core/impl/SPSectorUnmarshaller.class | Bin 809 -> 0 bytes .../stork/peps/auth/engine/core/impl/SignHW.class | Bin 13842 -> 0 bytes .../auth/engine/core/impl/SignModuleFactory.class | Bin 1319 -> 0 bytes .../stork/peps/auth/engine/core/impl/SignP12.class | Bin 16097 -> 0 bytes .../stork/peps/auth/engine/core/impl/SignSW.class | Bin 16107 -> 0 bytes .../impl/VIDPAuthenticationAttributesBuilder.class | Bin 1689 -> 0 bytes .../impl/VIDPAuthenticationAttributesImpl.class | Bin 2930 -> 0 bytes .../VIDPAuthenticationAttributesMarshaller.class | Bin 452 -> 0 bytes .../VIDPAuthenticationAttributesUnmarshaller.class | Bin 1274 -> 0 bytes .../validator/CustomAttributeQueryValidator.class | Bin 2158 -> 0 bytes .../core/validator/ExtensionsSchemaValidator.class | Bin 1949 -> 0 bytes .../MultipleAssertionResponseValidator.class | Bin 2268 -> 0 bytes .../validator/QAAAttributeSchemaValidator.class | Bin 1612 -> 0 bytes .../peps/configuration/ConfigurationCreator.class | Bin 4541 -> 0 bytes .../peps/configuration/ConfigurationEngine.class | Bin 1125 -> 0 bytes .../peps/configuration/ConfigurationReader.class | Bin 5824 -> 0 bytes .../configuration/ConfigurationSingleton.class | Bin 1934 -> 0 bytes .../stork/peps/configuration/InstanceEngine.class | Bin 1212 -> 0 bytes .../peps/exceptions/SAMLEngineException.class | Bin 833 -> 0 bytes .../peps/exceptions/STORKSAMLEngineException.class | Bin 1864 -> 0 bytes .../STORKSAMLEngineRuntimeException.class | Bin 884 -> 0 bytes .../target/maven-archiver/pom.properties | 5 - .../target/test-classes/SamlEngine.xml | 67 - .../target/test-classes/SignModule_Conf0.xml | 21 - .../target/test-classes/SignModule_Conf1.xml | 12 - .../target/test-classes/SignModule_Conf2.xml | 12 - .../target/test-classes/SignModule_Conf3.xml | 12 - .../target/test-classes/SignModule_P11.xml | 11 - .../target/test-classes/StorkSamlEngine_Conf0.xml | 87 - .../target/test-classes/StorkSamlEngine_Conf1.xml | 85 - .../target/test-classes/StorkSamlEngine_Conf2.xml | 60 - .../target/test-classes/StorkSamlEngine_Conf3.xml | 57 - .../eu/stork/STORKSAMLEngine/AttrQueryRequest.xml | 82 - .../stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml | 15 - .../STORKSAMLEngine/AttrQueryRequestTagDelete.xml | 66 - .../eu/stork/STORKSAMLEngine/AttrQueryResponse.xml | 124 - .../data/eu/stork/STORKSAMLEngine/AuthnRequest.xml | 72 - .../STORKSAMLEngine/AuthnRequestTagDelete.xml | 47 - .../AuthnRequestTagDeleteEncoded.xml | 47 - .../eu/stork/peps/test/simple/SSETestUtils.class | Bin 4683 -> 0 bytes .../eu/stork/peps/test/simple/SimpleBaseTest.class | Bin 1100 -> 0 bytes .../test/simple/StorkAttrQueryRequestTest.class | Bin 15002 -> 0 bytes .../test/simple/StorkAttrQueryResponseTest.class | Bin 29423 -> 0 bytes .../peps/test/simple/StorkAuthRequestTest.class | Bin 15798 -> 0 bytes .../peps/test/simple/StorkLogoutRequestTest.class | Bin 3110 -> 0 bytes .../peps/test/simple/StorkLogoutResponseTest.class | Bin 3961 -> 0 bytes .../peps/test/simple/StorkNewResponseTest.class | Bin 12588 -> 0 bytes .../stork/peps/test/simple/StorkResponseTest.class | Bin 25902 -> 0 bytes .../target/test-classes/logback-test.xml | 21 - .../target/test-classes/p11Conf.cfg | 24 - id/server/stork2-commons/.svn/all-wcprops | 17 + id/server/stork2-commons/.svn/dir-prop-base | 10 + id/server/stork2-commons/.svn/entries | 99 + .../.svn/text-base/Releases.svn-base | 73 + .../stork2-commons/.svn/text-base/pom.xml.svn-base | 213 ++ id/server/stork2-commons/Releases | 73 + id/server/stork2-commons/pom.xml | 213 ++ id/server/stork2-commons/src/.svn/all-wcprops | 5 + id/server/stork2-commons/src/.svn/entries | 34 + id/server/stork2-commons/src/main/.svn/all-wcprops | 5 + id/server/stork2-commons/src/main/.svn/entries | 37 + .../src/main/config/.svn/all-wcprops | 5 + .../stork2-commons/src/main/config/.svn/entries | 31 + .../src/main/config/embedded/.svn/all-wcprops | 11 + .../src/main/config/embedded/.svn/entries | 62 + .../.svn/text-base/pepsUtil.properties.svn-base | 269 ++ .../src/main/config/embedded/pepsUtil.properties | 269 ++ .../stork2-commons/src/main/java/.svn/all-wcprops | 5 + .../stork2-commons/src/main/java/.svn/entries | 31 + .../src/main/java/eu/.svn/all-wcprops | 5 + .../stork2-commons/src/main/java/eu/.svn/entries | 31 + .../src/main/java/eu/stork/.svn/all-wcprops | 5 + .../src/main/java/eu/stork/.svn/entries | 31 + .../src/main/java/eu/stork/peps/.svn/all-wcprops | 5 + .../src/main/java/eu/stork/peps/.svn/entries | 34 + .../main/java/eu/stork/peps/auth/.svn/all-wcprops | 5 + .../src/main/java/eu/stork/peps/auth/.svn/entries | 34 + .../eu/stork/peps/auth/commons/.svn/all-wcprops | 191 + .../java/eu/stork/peps/auth/commons/.svn/entries | 1085 ++++++ .../text-base/AttributeConstants.java.svn-base | 72 + .../.svn/text-base/AttributeName.java.svn-base | 74 + .../.svn/text-base/AttributeProvider.java.svn-base | 123 + .../text-base/AttributeProvidersMap.java.svn-base | 96 + .../.svn/text-base/AttributeSource.java.svn-base | 188 + .../.svn/text-base/AttributeUtil.java.svn-base | 231 ++ .../.svn/text-base/CitizenConsent.java.svn-base | 123 + .../commons/.svn/text-base/Country.java.svn-base | 95 + .../.svn/text-base/CountryCodes.java.svn-base | 79 + .../commons/.svn/text-base/DateUtil.java.svn-base | 169 + .../IAttributeListProcessor.java.svn-base | 148 + .../text-base/IAttributeProvidersMap.java.svn-base | 82 + .../text-base/IPersonalAttributeList.java.svn-base | 194 + .../.svn/text-base/IStorkLogger.java.svn-base | 239 ++ .../.svn/text-base/IStorkSession.java.svn-base | 85 + .../commons/.svn/text-base/Linker.java.svn-base | 316 ++ .../.svn/text-base/PEPSErrors.java.svn-base | 392 ++ .../.svn/text-base/PEPSParameters.java.svn-base | 625 ++++ .../commons/.svn/text-base/PEPSUtil.java.svn-base | 391 ++ .../.svn/text-base/PEPSValues.java.svn-base | 342 ++ .../.svn/text-base/PersonalAttribute.java.svn-base | 348 ++ .../text-base/PersonalAttributeList.java.svn-base | 396 +++ .../text-base/STORKAttrQueryRequest.java.svn-base | 447 +++ .../text-base/STORKAttrQueryResponse.java.svn-base | 388 ++ .../.svn/text-base/STORKAuthnRequest.java.svn-base | 495 +++ .../text-base/STORKAuthnResponse.java.svn-base | 383 ++ .../text-base/STORKLogoutRequest.java.svn-base | 197 + .../text-base/STORKLogoutResponse.java.svn-base | 250 ++ .../.svn/text-base/STORKStatusCode.java.svn-base | 68 + .../text-base/STORKSubStatusCode.java.svn-base | 71 + .../.svn/text-base/package-info.java.svn-base | 9 + .../peps/auth/commons/AttributeConstants.java | 72 + .../eu/stork/peps/auth/commons/AttributeName.java | 74 + .../stork/peps/auth/commons/AttributeProvider.java | 123 + .../peps/auth/commons/AttributeProvidersMap.java | 96 + .../stork/peps/auth/commons/AttributeSource.java | 188 + .../eu/stork/peps/auth/commons/AttributeUtil.java | 231 ++ .../eu/stork/peps/auth/commons/CitizenConsent.java | 123 + .../java/eu/stork/peps/auth/commons/Country.java | 95 + .../eu/stork/peps/auth/commons/CountryCodes.java | 79 + .../java/eu/stork/peps/auth/commons/DateUtil.java | 169 + .../peps/auth/commons/IAttributeListProcessor.java | 148 + .../peps/auth/commons/IAttributeProvidersMap.java | 82 + .../peps/auth/commons/IPersonalAttributeList.java | 194 + .../eu/stork/peps/auth/commons/IStorkLogger.java | 239 ++ .../eu/stork/peps/auth/commons/IStorkSession.java | 85 + .../java/eu/stork/peps/auth/commons/Linker.java | 316 ++ .../eu/stork/peps/auth/commons/PEPSErrors.java | 392 ++ .../eu/stork/peps/auth/commons/PEPSParameters.java | 625 ++++ .../java/eu/stork/peps/auth/commons/PEPSUtil.java | 391 ++ .../eu/stork/peps/auth/commons/PEPSValues.java | 342 ++ .../stork/peps/auth/commons/PersonalAttribute.java | 348 ++ .../peps/auth/commons/PersonalAttributeList.java | 397 +++ .../peps/auth/commons/STORKAttrQueryRequest.java | 447 +++ .../peps/auth/commons/STORKAttrQueryResponse.java | 392 ++ .../stork/peps/auth/commons/STORKAuthnRequest.java | 495 +++ .../peps/auth/commons/STORKAuthnResponse.java | 387 ++ .../peps/auth/commons/STORKLogoutRequest.java | 197 + .../peps/auth/commons/STORKLogoutResponse.java | 250 ++ .../stork/peps/auth/commons/STORKStatusCode.java | 68 + .../peps/auth/commons/STORKSubStatusCode.java | 71 + .../peps/auth/commons/exceptions/.svn/all-wcprops | 53 + .../peps/auth/commons/exceptions/.svn/entries | 300 ++ .../text-base/AbstractPEPSException.java.svn-base | 173 + .../.svn/text-base/CPEPSException.java.svn-base | 143 + .../InternalErrorPEPSException.java.svn-base | 74 + .../InvalidParameterPEPSException.java.svn-base | 54 + .../InvalidSessionPEPSException.java.svn-base | 46 + .../text-base/SecurityPEPSException.java.svn-base | 67 + .../text-base/StorkPEPSException.java.svn-base | 53 + .../.svn/text-base/package-info.java.svn-base | 7 + .../commons/exceptions/AbstractPEPSException.java | 173 + .../auth/commons/exceptions/CPEPSException.java | 143 + .../exceptions/InternalErrorPEPSException.java | 74 + .../exceptions/InvalidParameterPEPSException.java | 54 + .../exceptions/InvalidSessionPEPSException.java | 46 + .../commons/exceptions/SecurityPEPSException.java | 67 + .../commons/exceptions/StorkPEPSException.java | 53 + .../peps/auth/commons/exceptions/package-info.java | 7 + .../eu/stork/peps/auth/commons/package-info.java | 9 + .../eu/stork/peps/auth/specific/.svn/all-wcprops | 41 + .../java/eu/stork/peps/auth/specific/.svn/entries | 232 ++ .../.svn/text-base/IAUService.java.svn-base | 215 ++ .../text-base/ICheckAttributeValue.java.svn-base | 37 + .../.svn/text-base/IDeriveAttribute.java.svn-base | 40 + .../.svn/text-base/INormaliseValue.java.svn-base | 35 + .../text-base/ITranslatorService.java.svn-base | 100 + .../.svn/text-base/package-info.java.svn-base | 8 + .../eu/stork/peps/auth/specific/IAUService.java | 215 ++ .../peps/auth/specific/ICheckAttributeValue.java | 37 + .../stork/peps/auth/specific/IDeriveAttribute.java | 40 + .../stork/peps/auth/specific/INormaliseValue.java | 35 + .../peps/auth/specific/ITranslatorService.java | 100 + .../eu/stork/peps/auth/specific/package-info.java | 8 + .../java/eu/stork/peps/complex/.svn/all-wcprops | 5 + .../main/java/eu/stork/peps/complex/.svn/entries | 31 + .../stork/peps/complex/attributes/.svn/all-wcprops | 125 + .../eu/stork/peps/complex/attributes/.svn/entries | 708 ++++ .../.svn/text-base/AcTitleType.java.svn-base | 89 + .../text-base/AttributeStatusType.java.svn-base | 61 + .../text-base/CanonicalAddressType.java.svn-base | 264 ++ .../.svn/text-base/Habilitation.java.svn-base | 89 + .../.svn/text-base/HabilitationType.java.svn-base | 89 + .../text-base/HasAccountInBankType.java.svn-base | 89 + .../.svn/text-base/HasDegreeType.java.svn-base | 174 + .../text-base/IsAcademicStaffType.java.svn-base | 145 + .../.svn/text-base/IsAdminStaffType.java.svn-base | 89 + .../IsCourseCoordinatorType.java.svn-base | 89 + .../.svn/text-base/IsHCPType.java.svn-base | 145 + .../IsHealthCareProfessionalType.java.svn-base | 145 + .../.svn/text-base/IsStudentType.java.svn-base | 146 + .../.svn/text-base/IsTeacherOfType.java.svn-base | 145 + .../text-base/MandateContentType.java.svn-base | 233 ++ .../.svn/text-base/MandateType.java.svn-base | 125 + .../.svn/text-base/ObjectFactory.java.svn-base | 433 +++ .../RepresentationPersonType.java.svn-base | 289 ++ .../text-base/RequestedAttributeType.java.svn-base | 212 ++ .../.svn/text-base/package-info.java.svn-base | 9 + .../stork/peps/complex/attributes/AcTitleType.java | 89 + .../complex/attributes/AttributeStatusType.java | 61 + .../complex/attributes/CanonicalAddressType.java | 264 ++ .../peps/complex/attributes/Habilitation.java | 89 + .../peps/complex/attributes/HabilitationType.java | 89 + .../complex/attributes/HasAccountInBankType.java | 89 + .../peps/complex/attributes/HasDegreeType.java | 174 + .../complex/attributes/IsAcademicStaffType.java | 145 + .../peps/complex/attributes/IsAdminStaffType.java | 89 + .../attributes/IsCourseCoordinatorType.java | 89 + .../stork/peps/complex/attributes/IsHCPType.java | 145 + .../attributes/IsHealthCareProfessionalType.java | 145 + .../peps/complex/attributes/IsStudentType.java | 146 + .../peps/complex/attributes/IsTeacherOfType.java | 145 + .../complex/attributes/MandateContentType.java | 233 ++ .../stork/peps/complex/attributes/MandateType.java | 125 + .../peps/complex/attributes/ObjectFactory.java | 433 +++ .../attributes/RepresentationPersonType.java | 289 ++ .../complex/attributes/RequestedAttributeType.java | 212 ++ .../peps/complex/attributes/package-info.java | 9 + .../src/main/resources/.svn/all-wcprops | 17 + .../stork2-commons/src/main/resources/.svn/entries | 96 + .../text-base/StorkcomplexAttributes.xsd.svn-base | 305 ++ .../resources/.svn/text-base/log4j.xml.svn-base | 19 + .../src/main/resources/StorkcomplexAttributes.xsd | 305 ++ .../stork2-commons/src/main/resources/log4j.xml | 19 + id/server/stork2-commons/src/test/.svn/all-wcprops | 5 + id/server/stork2-commons/src/test/.svn/entries | 34 + .../stork2-commons/src/test/java/.svn/all-wcprops | 5 + .../stork2-commons/src/test/java/.svn/entries | 31 + .../src/test/java/eu/.svn/all-wcprops | 5 + .../stork2-commons/src/test/java/eu/.svn/entries | 31 + .../src/test/java/eu/stork/.svn/all-wcprops | 5 + .../src/test/java/eu/stork/.svn/entries | 31 + .../src/test/java/eu/stork/peps/.svn/all-wcprops | 5 + .../src/test/java/eu/stork/peps/.svn/entries | 31 + .../test/java/eu/stork/peps/tests/.svn/all-wcprops | 59 + .../src/test/java/eu/stork/peps/tests/.svn/entries | 334 ++ .../AttributeProvidersMapTestCase.java.svn-base | 134 + .../AttributeSourceTestCase.java.svn-base | 88 + .../text-base/AttributeUtilTestCase.java.svn-base | 537 +++ .../ComplexAttributesMarshalling.java.svn-base | 187 + .../.svn/text-base/DateUtilTestCase.java.svn-base | 294 ++ .../.svn/text-base/PEPSUtilTestCase.java.svn-base | 553 +++ .../PersonalAttributeListTestCase.java.svn-base | 747 ++++ .../PersonalAttributeTestCase.java.svn-base | 182 + .../.svn/text-base/package-info.java.svn-base | 5 + .../peps/tests/AttributeProvidersMapTestCase.java | 134 + .../stork/peps/tests/AttributeSourceTestCase.java | 88 + .../eu/stork/peps/tests/AttributeUtilTestCase.java | 537 +++ .../peps/tests/ComplexAttributesMarshalling.java | 187 + .../java/eu/stork/peps/tests/DateUtilTestCase.java | 294 ++ .../java/eu/stork/peps/tests/PEPSUtilTestCase.java | 553 +++ .../peps/tests/PersonalAttributeListTestCase.java | 747 ++++ .../peps/tests/PersonalAttributeTestCase.java | 182 + .../java/eu/stork/peps/tests/package-info.java | 5 + .../src/test/resources/.svn/all-wcprops | 11 + .../stork2-commons/src/test/resources/.svn/entries | 62 + .../resources/.svn/text-base/log4j.xml.svn-base | 19 + .../stork2-commons/src/test/resources/log4j.xml | 19 + id/server/stork2-saml-engine/pom.xml | 201 ++ .../src/main/java/META-INF/MANIFEST.MF | 3 + .../java/eu/stork/peps/auth/engine/SAMLEngine.java | 415 +++ .../eu/stork/peps/auth/engine/SAMLEngineUtils.java | 833 +++++ .../eu/stork/peps/auth/engine/STORKSAMLEngine.java | 3744 ++++++++++++++++++++ .../stork/peps/auth/engine/X509PrincipalUtil.java | 69 + .../auth/engine/core/AuthenticationAttributes.java | 57 + .../peps/auth/engine/core/CitizenCountryCode.java | 56 + .../auth/engine/core/CustomAttributeQuery.java | 51 + .../engine/core/CustomRequestAbstractType.java | 176 + .../peps/auth/engine/core/EIDCrossBorderShare.java | 58 + .../peps/auth/engine/core/EIDCrossSectorShare.java | 56 + .../peps/auth/engine/core/EIDSectorShare.java | 57 + .../stork/peps/auth/engine/core/QAAAttribute.java | 63 + .../peps/auth/engine/core/RequestedAttribute.java | 140 + .../peps/auth/engine/core/RequestedAttributes.java | 51 + .../eu/stork/peps/auth/engine/core/SAMLCore.java | 98 + .../peps/auth/engine/core/SAMLEngineSignI.java | 88 + .../stork/peps/auth/engine/core/SPApplication.java | 56 + .../eu/stork/peps/auth/engine/core/SPCountry.java | 56 + .../java/eu/stork/peps/auth/engine/core/SPID.java | 56 + .../stork/peps/auth/engine/core/SPInformation.java | 56 + .../stork/peps/auth/engine/core/SPInstitution.java | 56 + .../eu/stork/peps/auth/engine/core/SPSector.java | 56 + .../stork/peps/auth/engine/core/STORKSAMLCore.java | 508 +++ .../engine/core/VIDPAuthenticationAttributes.java | 72 + .../core/impl/AuthenticationAttributesBuilder.java | 56 + .../core/impl/AuthenticationAttributesImpl.java | 109 + .../impl/AuthenticationAttributesMarshaller.java | 27 + .../impl/AuthenticationAttributesUnmarshaller.java | 54 + .../core/impl/CitizenCountryCodeBuilder.java | 50 + .../engine/core/impl/CitizenCountryCodeImpl.java | 82 + .../core/impl/CitizenCountryCodeMarshaller.java | 45 + .../core/impl/CitizenCountryCodeUnmarshaller.java | 41 + .../core/impl/CustomAttributeQueryBuilder.java | 26 + .../engine/core/impl/CustomAttributeQueryImpl.java | 65 + .../core/impl/CustomAttributeQueryMarshaller.java | 50 + .../impl/CustomAttributeQueryUnmarshaller.java | 114 + .../core/impl/EIDCrossBorderShareBuilder.java | 52 + .../engine/core/impl/EIDCrossBorderShareImpl.java | 87 + .../core/impl/EIDCrossBorderShareMarshaller.java | 47 + .../core/impl/EIDCrossBorderShareUnmarshaller.java | 43 + .../core/impl/EIDCrossSectorShareBuilder.java | 52 + .../engine/core/impl/EIDCrossSectorShareImpl.java | 89 + .../core/impl/EIDCrossSectorShareMarshaller.java | 46 + .../core/impl/EIDCrossSectorShareUnmarshaller.java | 47 + .../engine/core/impl/EIDSectorShareBuilder.java | 51 + .../auth/engine/core/impl/EIDSectorShareImpl.java | 85 + .../engine/core/impl/EIDSectorShareMarshaller.java | 46 + .../core/impl/EIDSectorShareUnmarshaller.java | 47 + .../auth/engine/core/impl/QAAAttributeBuilder.java | 52 + .../auth/engine/core/impl/QAAAttributeImpl.java | 84 + .../engine/core/impl/QAAAttributeMarshaller.java | 45 + .../engine/core/impl/QAAAttributeUnmarshaller.java | 41 + .../core/impl/RequestedAttributeBuilder.java | 54 + .../engine/core/impl/RequestedAttributeImpl.java | 220 ++ .../core/impl/RequestedAttributeMarshaller.java | 89 + .../core/impl/RequestedAttributeUnmarshaller.java | 96 + .../core/impl/RequestedAttributesBuilder.java | 54 + .../engine/core/impl/RequestedAttributesImpl.java | 95 + .../core/impl/RequestedAttributesMarshaller.java | 33 + .../core/impl/RequestedAttributesUnmarshaller.java | 52 + .../engine/core/impl/SPApplicationBuilder.java | 51 + .../auth/engine/core/impl/SPApplicationImpl.java | 84 + .../engine/core/impl/SPApplicationMarshaller.java | 46 + .../core/impl/SPApplicationUnmarshaller.java | 42 + .../auth/engine/core/impl/SPCountryBuilder.java | 52 + .../peps/auth/engine/core/impl/SPCountryImpl.java | 82 + .../auth/engine/core/impl/SPCountryMarshaller.java | 45 + .../engine/core/impl/SPCountryUnmarshaller.java | 42 + .../peps/auth/engine/core/impl/SPIDBuilder.java | 50 + .../stork/peps/auth/engine/core/impl/SPIDImpl.java | 82 + .../peps/auth/engine/core/impl/SPIDMarshaller.java | 45 + .../auth/engine/core/impl/SPIDUnmarshaller.java | 41 + .../engine/core/impl/SPInformationBuilder.java | 41 + .../auth/engine/core/impl/SPInformationImpl.java | 110 + .../engine/core/impl/SPInformationMarshaller.java | 33 + .../core/impl/SPInformationUnmarshaller.java | 52 + .../engine/core/impl/SPInstitutionBuilder.java | 51 + .../auth/engine/core/impl/SPInstitutionImpl.java | 84 + .../engine/core/impl/SPInstitutionMarshaller.java | 46 + .../core/impl/SPInstitutionUnmarshaller.java | 41 + .../auth/engine/core/impl/SPSectorBuilder.java | 50 + .../peps/auth/engine/core/impl/SPSectorImpl.java | 84 + .../auth/engine/core/impl/SPSectorMarshaller.java | 45 + .../engine/core/impl/SPSectorUnmarshaller.java | 42 + .../stork/peps/auth/engine/core/impl/SignHW.java | 468 +++ .../auth/engine/core/impl/SignModuleFactory.java | 64 + .../stork/peps/auth/engine/core/impl/SignP12.java | 565 +++ .../stork/peps/auth/engine/core/impl/SignSW.java | 527 +++ .../impl/VIDPAuthenticationAttributesBuilder.java | 41 + .../impl/VIDPAuthenticationAttributesImpl.java | 132 + .../VIDPAuthenticationAttributesMarshaller.java | 33 + .../VIDPAuthenticationAttributesUnmarshaller.java | 55 + .../peps/auth/engine/core/impl/package-info.java | 19 + .../stork/peps/auth/engine/core/package-info.java | 19 + .../validator/CustomAttributeQueryValidator.java | 69 + .../core/validator/ExtensionsSchemaValidator.java | 61 + .../MultipleAssertionResponseValidator.java | 80 + .../validator/QAAAttributeSchemaValidator.java | 65 + .../auth/engine/core/validator/package-info.java | 19 + .../eu/stork/peps/auth/engine/package-info.java | 19 + .../peps/configuration/ConfigurationCreator.java | 142 + .../peps/configuration/ConfigurationEngine.java | 69 + .../peps/configuration/ConfigurationReader.java | 234 ++ .../peps/configuration/ConfigurationSingleton.java | 74 + .../stork/peps/configuration/InstanceEngine.java | 70 + .../eu/stork/peps/configuration/package-info.java | 19 + .../stork/peps/exceptions/SAMLEngineException.java | 57 + .../peps/exceptions/STORKSAMLEngineException.java | 135 + .../STORKSAMLEngineRuntimeException.java | 56 + .../eu/stork/peps/exceptions/package-info.java | 19 + .../eu/stork/peps/test/simple/SSETestUtils.java | 173 + .../eu/stork/peps/test/simple/SimpleBaseTest.java | 64 + .../test/simple/StorkAttrQueryRequestTest.java | 864 +++++ .../test/simple/StorkAttrQueryResponseTest.java | 1085 ++++++ .../peps/test/simple/StorkAuthRequestTest.java | 968 +++++ .../peps/test/simple/StorkLogoutRequestTest.java | 89 + .../peps/test/simple/StorkLogoutResponseTest.java | 142 + .../peps/test/simple/StorkNewResponseTest.java | 533 +++ .../stork/peps/test/simple/StorkResponseTest.java | 935 +++++ .../eu/stork/peps/test/simple/package-info.java | 20 + .../src/test/resources/SamlEngine.xml | 67 + .../src/test/resources/SignModule_Conf0.xml | 21 + .../src/test/resources/SignModule_Conf1.xml | 12 + .../src/test/resources/SignModule_Conf2.xml | 12 + .../src/test/resources/SignModule_Conf3.xml | 12 + .../src/test/resources/SignModule_P11.xml | 11 + .../src/test/resources/StorkSamlEngine_Conf0.xml | 87 + .../src/test/resources/StorkSamlEngine_Conf1.xml | 85 + .../src/test/resources/StorkSamlEngine_Conf2.xml | 60 + .../src/test/resources/StorkSamlEngine_Conf3.xml | 57 + .../eu/stork/STORKSAMLEngine/AttrQueryRequest.xml | 82 + .../stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml | 15 + .../STORKSAMLEngine/AttrQueryRequestTagDelete.xml | 66 + .../eu/stork/STORKSAMLEngine/AttrQueryResponse.xml | 124 + .../data/eu/stork/STORKSAMLEngine/AuthnRequest.xml | 72 + .../STORKSAMLEngine/AuthnRequestTagDelete.xml | 47 + .../AuthnRequestTagDeleteEncoded.xml | 47 + .../src/test/resources/logback-test.xml | 21 + .../src/test/resources/p11Conf.cfg | 24 + .../eu/stork/Commons/1.2.0/Commons-1.2.0.jar | Bin 72102 -> 0 bytes .../eu/stork/Commons/1.2.0/Commons-1.2.0.pom | 222 -- 625 files changed, 53455 insertions(+), 20854 deletions(-) delete mode 100644 id/server/SamlEngine-VIDP/pom.xml delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/META-INF/MANIFEST.MF delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPID.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/InstanceEngine.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java delete mode 100644 id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/package-info.java delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/SamlEngine.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf0.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf1.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf2.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf3.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/SignModule_P11.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf0.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf1.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf2.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf3.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/logback-test.xml delete mode 100644 id/server/SamlEngine-VIDP/src/test/resources/p11Conf.cfg delete mode 100644 id/server/SamlEngine-VIDP/target/SamlEngine-1.4.0-sources.jar delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngine.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngineUtils.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/STORKSAMLEngine.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/X509PrincipalUtil.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/AuthenticationAttributes.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CitizenCountryCode.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomAttributeQuery.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDSectorShare.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/QAAAttribute.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttribute.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttributes.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLCore.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLEngineSignI.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPApplication.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPCountry.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPID.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInformation.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInstitution.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPSector.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/STORKSAMLCore.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignHW.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignP12.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignSW.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationCreator.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationEngine.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationReader.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationSingleton.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/InstanceEngine.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/SAMLEngineException.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineException.class delete mode 100644 id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.class delete mode 100644 id/server/SamlEngine-VIDP/target/maven-archiver/pom.properties delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/SamlEngine.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf0.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf1.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf2.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf3.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/SignModule_P11.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf0.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf1.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf2.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf3.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SSETestUtils.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SimpleBaseTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAuthRequestTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutRequestTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutResponseTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkNewResponseTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkResponseTest.class delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/logback-test.xml delete mode 100644 id/server/SamlEngine-VIDP/target/test-classes/p11Conf.cfg create mode 100644 id/server/stork2-commons/.svn/all-wcprops create mode 100644 id/server/stork2-commons/.svn/dir-prop-base create mode 100644 id/server/stork2-commons/.svn/entries create mode 100644 id/server/stork2-commons/.svn/text-base/Releases.svn-base create mode 100644 id/server/stork2-commons/.svn/text-base/pom.xml.svn-base create mode 100644 id/server/stork2-commons/Releases create mode 100644 id/server/stork2-commons/pom.xml create mode 100644 id/server/stork2-commons/src/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/.svn/entries create mode 100644 id/server/stork2-commons/src/main/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/.svn/entries create mode 100644 id/server/stork2-commons/src/main/config/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/config/.svn/entries create mode 100644 id/server/stork2-commons/src/main/config/embedded/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/config/embedded/.svn/entries create mode 100644 id/server/stork2-commons/src/main/config/embedded/.svn/text-base/pepsUtil.properties.svn-base create mode 100644 id/server/stork2-commons/src/main/config/embedded/pepsUtil.properties create mode 100644 id/server/stork2-commons/src/main/java/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeConstants.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeName.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvider.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvidersMap.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeSource.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeUtil.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CitizenConsent.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Country.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CountryCodes.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/DateUtil.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeListProcessor.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeProvidersMap.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IPersonalAttributeList.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkLogger.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkSession.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Linker.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSErrors.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSParameters.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSUtil.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSValues.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttribute.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttributeList.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryRequest.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryResponse.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnRequest.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnResponse.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutRequest.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutResponse.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKStatusCode.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKSubStatusCode.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/package-info.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeConstants.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeName.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvider.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvidersMap.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeSource.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeUtil.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CitizenConsent.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Country.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CountryCodes.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/DateUtil.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeListProcessor.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeProvidersMap.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IPersonalAttributeList.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkLogger.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkSession.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Linker.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSErrors.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSParameters.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSUtil.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSValues.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttribute.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryRequest.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryResponse.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnRequest.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnResponse.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutRequest.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutResponse.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKStatusCode.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKSubStatusCode.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/AbstractPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/CPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InternalErrorPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidParameterPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidSessionPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/SecurityPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/StorkPEPSException.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/package-info.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/AbstractPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/CPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InternalErrorPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidParameterPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidSessionPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/SecurityPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/StorkPEPSException.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/package-info.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/package-info.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IAUService.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ICheckAttributeValue.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IDeriveAttribute.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/INormaliseValue.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ITranslatorService.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/package-info.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IAUService.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ICheckAttributeValue.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IDeriveAttribute.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/INormaliseValue.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ITranslatorService.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/package-info.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/entries create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AcTitleType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AttributeStatusType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/CanonicalAddressType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/Habilitation.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HabilitationType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasAccountInBankType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasDegreeType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAcademicStaffType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAdminStaffType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsCourseCoordinatorType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHCPType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHealthCareProfessionalType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsStudentType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsTeacherOfType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateContentType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/ObjectFactory.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RepresentationPersonType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RequestedAttributeType.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/package-info.java.svn-base create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AcTitleType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AttributeStatusType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/CanonicalAddressType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/Habilitation.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HabilitationType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasAccountInBankType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasDegreeType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAcademicStaffType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAdminStaffType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsCourseCoordinatorType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHCPType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHealthCareProfessionalType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsStudentType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsTeacherOfType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateContentType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/ObjectFactory.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RepresentationPersonType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RequestedAttributeType.java create mode 100644 id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/package-info.java create mode 100644 id/server/stork2-commons/src/main/resources/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/main/resources/.svn/entries create mode 100644 id/server/stork2-commons/src/main/resources/.svn/text-base/StorkcomplexAttributes.xsd.svn-base create mode 100644 id/server/stork2-commons/src/main/resources/.svn/text-base/log4j.xml.svn-base create mode 100644 id/server/stork2-commons/src/main/resources/StorkcomplexAttributes.xsd create mode 100644 id/server/stork2-commons/src/main/resources/log4j.xml create mode 100644 id/server/stork2-commons/src/test/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/.svn/entries create mode 100644 id/server/stork2-commons/src/test/java/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/java/.svn/entries create mode 100644 id/server/stork2-commons/src/test/java/eu/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/java/eu/.svn/entries create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/.svn/entries create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/entries create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/entries create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeProvidersMapTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeSourceTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeUtilTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/ComplexAttributesMarshalling.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/DateUtilTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PEPSUtilTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeListTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeTestCase.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/package-info.java.svn-base create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeProvidersMapTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeSourceTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeUtilTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/ComplexAttributesMarshalling.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/DateUtilTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PEPSUtilTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeListTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeTestCase.java create mode 100644 id/server/stork2-commons/src/test/java/eu/stork/peps/tests/package-info.java create mode 100644 id/server/stork2-commons/src/test/resources/.svn/all-wcprops create mode 100644 id/server/stork2-commons/src/test/resources/.svn/entries create mode 100644 id/server/stork2-commons/src/test/resources/.svn/text-base/log4j.xml.svn-base create mode 100644 id/server/stork2-commons/src/test/resources/log4j.xml create mode 100644 id/server/stork2-saml-engine/pom.xml create mode 100644 id/server/stork2-saml-engine/src/main/java/META-INF/MANIFEST.MF create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPID.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/package-info.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/package-info.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/InstanceEngine.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/package-info.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java create mode 100644 id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/package-info.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java create mode 100644 id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/package-info.java create mode 100644 id/server/stork2-saml-engine/src/test/resources/SamlEngine.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/SignModule_Conf0.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/SignModule_Conf1.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/SignModule_Conf2.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/SignModule_Conf3.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/SignModule_P11.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf0.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf1.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf2.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf3.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/logback-test.xml create mode 100644 id/server/stork2-saml-engine/src/test/resources/p11Conf.cfg delete mode 100644 repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar delete mode 100644 repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom (limited to 'repository') diff --git a/id/server/SamlEngine-VIDP/pom.xml b/id/server/SamlEngine-VIDP/pom.xml deleted file mode 100644 index cead61eb8..000000000 --- a/id/server/SamlEngine-VIDP/pom.xml +++ /dev/null @@ -1,201 +0,0 @@ - - - MOA.id - moa-id - 1.9.98-SNAPSHOT - - 4.0.0 - eu.stork - SamlEngine - jar - STORKSAMLEngine - - UTF-8 - 1.4.0 - 0.5.2 - 0.5.1 - 1.4.0 - 2.6.0 - ${maven.build.timestamp} - - ${saml.version} - - The STORKSAMLEngine library provides tools to support developers working with the Security Assertion Markup Language (SAML). - - - - - org.opensaml - https://build.shibboleth.net/nexus/content/repositories/releases - - - - shibboleth-release - Internet2 Releases - default - https://build.shibboleth.net/nexus/content/repositories/releases - - false - - - - - - - - eu.stork - Commons - ${commons.version} - - - - org.opensaml - opensaml - ${opensaml.version} - - - org.slf4j - slf4j-api - - - org.slf4j - slf4j-simple - - - org.slf4j - jcl-over-slf4j - - - org.slf4j - log4j-over-slf4j - - - org.slf4j - jul-to-slf4j - - - - - - org.slf4j - slf4j-api - 1.7.5 - - - org.slf4j - slf4j-simple - 1.7.5 - - - org.slf4j - jcl-over-slf4j - 1.7.5 - - - org.slf4j - log4j-over-slf4j - 1.7.5 - - - org.slf4j - jul-to-slf4j - 1.7.5 - - - - commons-io - commons-io - 2.2 - compile - - - xerces - xercesImpl - 2.11.0 - test - - - junit - junit - 4.11 - test - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - 1.6 - 1.6 - - - - - org.apache.maven.plugins - maven-surefire-plugin - - true - - - - - - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - verify - - jar - - - - - - org.apache.maven.plugins - maven-jar-plugin - - - - ${saml.version} - ${samlspecacept.version} - ${samlspec.version} - None - ${timestamp} - - - - - - - - - metrics - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.5.1 - - - html - xml - - - - - - - - - - diff --git a/id/server/SamlEngine-VIDP/src/main/java/META-INF/MANIFEST.MF b/id/server/SamlEngine-VIDP/src/main/java/META-INF/MANIFEST.MF deleted file mode 100644 index 254272e1c..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/META-INF/MANIFEST.MF +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java deleted file mode 100644 index 26635e337..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java +++ /dev/null @@ -1,415 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine; - -import java.io.ByteArrayInputStream; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; - -import javax.xml.XMLConstants; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.opensaml.Configuration; -import org.opensaml.DefaultBootstrap; -import org.opensaml.common.SAMLObject; -import org.opensaml.common.SignableSAMLObject; -import org.opensaml.xml.ConfigurationException; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.Marshaller; -import org.opensaml.xml.io.MarshallerFactory; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.io.Unmarshaller; -import org.opensaml.xml.io.UnmarshallerFactory; -import org.opensaml.xml.io.UnmarshallingException; -import org.opensaml.xml.parse.BasicParserPool; -import org.opensaml.xml.parse.XMLParserException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.SAMLEngineSignI; -import eu.stork.peps.auth.engine.core.STORKSAMLCore; -import eu.stork.peps.auth.engine.core.impl.CustomAttributeQueryMarshaller; -import eu.stork.peps.auth.engine.core.impl.CustomAttributeQueryUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SignModuleFactory; -import eu.stork.peps.configuration.ConfigurationCreator; -import eu.stork.peps.configuration.ConfigurationReader; -import eu.stork.peps.configuration.InstanceEngine; -import eu.stork.peps.exceptions.SAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; - -/** - * Class that wraps the operations over SAML tokens, both generation and - * validation of SAML requests and SAML responses. Compliant with "OASIS Secure - * Assertion Markup Language (SAML) 2.0, May 2005", but taking into account - * STORK specific requirements. - * - * @author fjquevedo - * @author iinigo - */ - -public class SAMLEngine { - - /** The Document Builder Factory. */ - private static javax.xml.parsers.DocumentBuilderFactory dbf = null; - - /** The instance of every engine SAML. */ - private static Map instanceConfigs; - - /** The instances of SAML engine. */ - private static Map> instances; - - /** The logger. */ - private static final Logger LOG = LoggerFactory.getLogger(SAMLEngine.class - .getName()); - - /** The Constant MODULE_SIGN_CONF. */ - private static final String MODULE_SIGN_CONF = "SignatureConf"; - - /** The Constant SAML_ENGINE_SIGN_CLASS. */ - private static final String SAML_ENGINE_SIGN_CLASS = "class"; - - /** The Constant SAML_ENGINE_CONF. */ - private static final String SAML_ENGINE_CONF = "SamlEngineConf"; - - /** The Constant SAML_ENGINE_FILE_CONF. */ - private static final String SAML_ENGINE_FILE_CONF = "fileConfiguration"; - - /** The codification of characters. */ - private static final String CHARACTER_ENCODING = "UTF-8"; - - /** The SAML core. */ - private STORKSAMLCore samlCore; - - /** The Module of Signature. */ - private SAMLEngineSignI signer; - - - /** Initializes the SAML engine. */ - /** Configure Document Builder Factory. */ - - static { - startUp(); - loadDocumentFactory(); - } - - /** - * Load document factory. - */ - private static void loadDocumentFactory() { - try { - dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance(); - dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - dbf.setNamespaceAware(true); - dbf.setIgnoringComments(true); - } catch (ParserConfigurationException e) { - LOG.error("Error parser configuration."); - throw new STORKSAMLEngineRuntimeException(e); - } - } - - /** - * Method that initializes the basic services for the SAML Engine, like the - * OpenSAML library and the BouncyCastle provider. - */ - private static void startUp() { - - LOG.info("SAMLEngine: Initialize OpenSAML"); - - - -/* Commented because it makes a problems with PVP2 MOA-ID - try { - DefaultBootstrap.bootstrap(); - } catch (ConfigurationException e) { - LOG.error("Problem initializing the OpenSAML library."); - throw new STORKSAMLEngineRuntimeException(e); - } -*/ - - LOG.debug("Read all file configurations. (instances of SAMLEngine)"); - try { - instanceConfigs = ConfigurationReader.readConfiguration(); - } catch (SAMLEngineException e) { - LOG.error("Error read configuration file."); - throw new STORKSAMLEngineRuntimeException(e); - } - - LOG.debug("Create all instances of saml engine. (instances of SAMLEngine)"); - try { - instances = ConfigurationCreator - .createConfiguration(instanceConfigs); - } catch (STORKSAMLEngineException e) { - LOG.error("Error initializing instances from Stork SAML engine."); - throw new STORKSAMLEngineRuntimeException(e); - } - } - - /** - * Instantiates a new SAML engine. - * - * @param nameInstance the name instance - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - protected SAMLEngine(final String nameInstance) - throws STORKSAMLEngineException { - LOG.info("Loading Specific Configuration."); - - LOG.debug("Create intance of saml messages."); - - Map instance = instances.get(nameInstance); - - if (instance == null || instance.isEmpty()) { - LOG.error("Instance: " + nameInstance + " not exist."); - throw new STORKSAMLEngineException("Instance: " + nameInstance - + " not exist."); - } - - Properties properties = (Properties) instance.get(SAML_ENGINE_CONF); - - if (properties == null) { - LOG.error("SamlEngine.xml: not exist."); - throw new STORKSAMLEngineException("SamlEngine.xml: not exist."); - } - - samlCore = new STORKSAMLCore(properties); - - final HashMap propertiesSign = (HashMap) instance - .get(MODULE_SIGN_CONF); - - LOG.debug("Loading Module of sign."); - signer = SignModuleFactory.getInstance(propertiesSign - .get(SAML_ENGINE_SIGN_CLASS)); - - try { - LOG.info("Initialize module of sign."); - signer.init(propertiesSign.get(SAML_ENGINE_FILE_CONF)); - LOG.info("Load cryptographic service provider of module of sign."); - signer.loadCryptServiceProvider(); - } catch (SAMLEngineException e) { - LOG.error("Error create signature module: " - + propertiesSign.get(SAML_ENGINE_FILE_CONF)); - LOG.info("Exception" + e); - throw new STORKSAMLEngineException(e); - } - } - - /** - * Gets the Signer properties. - * - * @return the SAML Sign properties - */ - protected SAMLEngineSignI getSigner() { - return signer; - } - - /** - * Gets the SAML core properties. - * - * @return the SAML core properties - */ - protected final STORKSAMLCore getSamlCoreProperties() { - return samlCore; - } - - /** - * Method that transform the received SAML object into a byte array - * representation. - * - * @param samlToken the SAML token. - * - * @return the byte[] of the SAML token. - * - * @throws SAMLEngineException the SAML engine exception - */ - private byte[] marshall(final XMLObject samlToken) - throws SAMLEngineException { - - try { - javax.xml.parsers.DocumentBuilder docBuilder = null; - - final MarshallerFactory marshallerFactory = Configuration - .getMarshallerFactory(); - - final Marshaller marshaller; - if (samlToken.getElementQName().toString().endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) - marshaller = new CustomAttributeQueryMarshaller(); - else - marshaller = marshallerFactory - .getMarshaller(samlToken); - - docBuilder = dbf.newDocumentBuilder(); - - final Document doc = docBuilder.newDocument(); - - marshaller.marshall(samlToken, doc); - - // Obtain a byte array representation of the marshalled SAML object - final DOMSource domSource = new DOMSource(doc); - final StringWriter writer = new StringWriter(); - final StreamResult result = new StreamResult(writer); - final TransformerFactory transFactory = TransformerFactory - .newInstance(); - Transformer transformer; - - transformer = transFactory.newTransformer(); - transformer.transform(domSource, result); - LOG.debug("SAML request \n"+ writer.toString()); - return writer.toString().getBytes(CHARACTER_ENCODING); - - } catch (ParserConfigurationException e) { - LOG.error("ParserConfigurationException."); - throw new SAMLEngineException(e); - } catch (MarshallingException e) { - LOG.error("MarshallingException."); - throw new SAMLEngineException(e); - } catch (TransformerConfigurationException e) { - LOG.error("TransformerConfigurationException."); - throw new SAMLEngineException(e); - } catch (TransformerException e) { - LOG.error("TransformerException."); - throw new SAMLEngineException(e); - } catch (UnsupportedEncodingException e) { - LOG.error("UnsupportedEncodingException: " + CHARACTER_ENCODING); - throw new SAMLEngineException(e); - } - } - - /** - * Method that signs a SAML Token. - * - * @param tokenSaml the token SAML - * - * @return the SAML object sign - * - * @throws SAMLEngineException the SAML engine exception - */ - private SignableSAMLObject sign(final SignableSAMLObject tokenSaml) - throws SAMLEngineException { - LOG.debug("Sign SamlToken."); - signer.sign(tokenSaml); - return tokenSaml; - } - - /** - * Sign and transform to byte array. - * - * @param samlToken the SAML token - * - * @return the byte[] of the SAML token - * - * @throws SAMLEngineException the SAML engine exception - */ - protected final byte[] signAndMarshall(final SignableSAMLObject samlToken) - throws SAMLEngineException { - LOG.debug("Marshall Saml Token."); - SignableSAMLObject signElement = sign(samlToken); - return marshall(signElement); - } - - /** - * Method that unmarshalls a SAML Object from a byte array representation to - * an XML Object. - * - * @param samlToken Byte array representation of a SAML Object - * - * @return XML Object (superclass of SAMLObject) - * - * @throws SAMLEngineException the SAML engine exception - */ - protected final XMLObject unmarshall(final byte[] samlToken) - throws SAMLEngineException { - try { - // Get parser pool manager - final BasicParserPool ppMgr = new BasicParserPool(); - // Note: this is necessary due to an unresolved Xerces deferred DOM - // issue/bug - final HashMap features = new HashMap(); - features.put(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); - ppMgr.setBuilderFeatures(features); - - ppMgr.setNamespaceAware(true); - - // Parse SAMLToken - Document document = ppMgr.parse(new ByteArrayInputStream(samlToken)); - if (document != null){ - final Element root = document.getDocumentElement(); - // Get appropriate unmarshaller - final UnmarshallerFactory unmarshallerFact = Configuration.getUnmarshallerFactory(); - // Unmarshall using the SAML Token root element - if (unmarshallerFact != null && root != null){ - final Unmarshaller unmarshaller; - if (root.getLocalName().equals(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) - unmarshaller = new CustomAttributeQueryUnmarshaller(); - else - unmarshaller = unmarshallerFact.getUnmarshaller(root); - try { - return unmarshaller.unmarshall(root); - } catch (NullPointerException e){ - LOG.error("Error element tag incomplet or null."); - throw new SAMLEngineException("NullPointerException", e); - } - } else { - LOG.error("Error element tag incomplet or null."); - throw new SAMLEngineException("NullPointerException : unmarshallerFact or root is null"); - } - } else { - LOG.error("Error element tag incomplet or null."); - throw new SAMLEngineException("NullPointerException : document is null"); - } - } catch (XMLParserException e) { - LOG.error("XML Parsing Error.", e); - throw new SAMLEngineException(e); - } catch (UnmarshallingException e) { - LOG.error("TransformerException.", e); - throw new SAMLEngineException(e); - } catch (NullPointerException e) { - LOG.error("Error element tag incomplet or null.", e); - throw new SAMLEngineException(e); - } - } - - /** - * Method that validates an XML Signature contained in a SAML Token. - * - * @param samlToken the SAML token - * - * @return the SAML object - * - * @throws SAMLEngineException the SAML engine exception - */ - protected final SAMLObject validateSignature( - final SignableSAMLObject samlToken) throws SAMLEngineException { - - LOG.info("Validate Signature"); - signer.validateSignature(samlToken); - - return samlToken; - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java deleted file mode 100644 index 1efbb8b32..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java +++ /dev/null @@ -1,833 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.UnsupportedEncodingException; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.xml.namespace.QName; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.commons.lang.StringUtils; -import org.joda.time.DateTime; -import org.opensaml.Configuration; -import org.opensaml.common.SAMLVersion; -import org.opensaml.common.impl.SecureRandomIdentifierGenerator; -import org.opensaml.saml2.common.Extensions; -import org.opensaml.saml2.common.impl.ExtensionsBuilder; -import org.opensaml.saml2.core.Assertion; -import org.opensaml.saml2.core.Attribute; -import org.opensaml.saml2.core.AttributeValue; -import org.opensaml.saml2.core.AuthnContext; -import org.opensaml.saml2.core.AuthnRequest; -import org.opensaml.saml2.core.AuthnStatement; -import org.opensaml.saml2.core.Issuer; -import org.opensaml.saml2.core.LogoutRequest; -import org.opensaml.saml2.core.LogoutResponse; -import org.opensaml.saml2.core.NameID; -import org.opensaml.saml2.core.Response; -import org.opensaml.saml2.core.Status; -import org.opensaml.saml2.core.StatusCode; -import org.opensaml.saml2.core.StatusMessage; -import org.opensaml.saml2.core.Subject; -import org.opensaml.saml2.core.SubjectConfirmation; -import org.opensaml.saml2.core.SubjectConfirmationData; -import org.opensaml.saml2.core.SubjectLocality; -import org.opensaml.saml2.core.impl.AssertionBuilder; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.schema.XSAny; -import org.opensaml.xml.signature.KeyInfo; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.QAAAttribute; -import eu.stork.peps.auth.engine.core.RequestedAttribute; -import eu.stork.peps.auth.engine.core.SAMLCore; -import eu.stork.peps.auth.engine.core.SPApplication; -import eu.stork.peps.auth.engine.core.SPCountry; -import eu.stork.peps.auth.engine.core.SPInstitution; -import eu.stork.peps.auth.engine.core.SPSector; -import eu.stork.peps.auth.engine.core.impl.CustomAttributeQueryBuilder; -import eu.stork.peps.exceptions.STORKSAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; - -/** - * The Class SAMLEngineUtils. - * - * @author fjquevedo - * @author iinigo - * - */ -public final class SAMLEngineUtils { - - /** The Constant UTF_8. */ - public static final String UTF_8 = "UTF-8"; - - /** The Constant SHA_512. */ - public static final String SHA_512 = "SHA-512"; - - /** The generator. */ - private static SecureRandomIdentifierGenerator generator; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(SAMLEngineUtils.class.getName()); - - /** - * Method that generates a random value according to NCName grammar. - * - * NCName ::= NCNameStartChar NCNameChar* NCNameChar ::= NameChar - ':' - * NCNameStartChar ::= Letter | '_' NameStartChar ::= ":" | [A-Z] | "_" | - * [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | - * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | - * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] - * NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | - * [#x203F-#x2040] Name ::= NameStartChar (NameChar)* Letter ::= BaseChar | - * Ideographic BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] | - * [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131] | - * [#x0134-#x013E] | [#x0141-#x0148] | [#x014A-#x017E] | [#x0180-#x01C3] | - * [#x01CD-#x01F0] | [#x01F4-#x01F5] | [#x01FA-#x0217] | [#x0250-#x02A8] | - * [#x02BB-#x02C1] | #x0386 | [#x0388-#x038A] | #x038C | [#x038E-#x03A1] | - * [#x03A3-#x03CE] | [#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | - * [#x03E2-#x03F3] | [#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | - * [#x045E-#x0481] | [#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | - * [#x04D0-#x04EB] | [#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | - * #x0559 | [#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | - * [#x0621-#x063A] | [#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | - * [#x06C0-#x06CE] | [#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | - * [#x0905-#x0939] | #x093D | [#x0958-#x0961] | [#x0985-#x098C] | - * [#x098F-#x0990] | [#x0993-#x09A8] | [#x09AA-#x09B0] | #x09B2 | - * [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1] | [#x09F0-#x09F1] | - * [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | [#x0A13-#x0A28] | [#x0A2A-#x0A30] | - * [#x0A32-#x0A33] | [#x0A35-#x0A36] | [#x0A38-#x0A39] | [#x0A59-#x0A5C] | - * #x0A5E | [#x0A72-#x0A74] | [#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | - * [#x0A93-#x0AA8] | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | - * #x0ABD | #x0AE0 | [#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | - * [#x0B2A-#x0B30] | [#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | - * [#x0B5C-#x0B5D] | [#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | - * [#x0B92-#x0B95] | [#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | - * [#x0BA3-#x0BA4] | [#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | - * [#x0C05-#x0C0C] | [#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | - * [#x0C35-#x0C39] | [#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | - * [#x0C92-#x0CA8] | [#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | - * [#x0CE0-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | - * [#x0D2A-#x0D39] | [#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | - * [#x0E32-#x0E33] | [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | - * [#x0E87-#x0E88] | #x0E8A | #x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | - * [#x0EA1-#x0EA3] | #x0EA5 | #x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | - * #x0EB0 | [#x0EB2-#x0EB3] | #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | - * [#x0F49-#x0F69] | [#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | - * [#x1102-#x1103] | [#x1105-#x1107] | #x1109 | [#x110B-#x110C] | - * [#x110E-#x1112] | #x113C | #x113E | #x1140 | #x114C | #x114E | #x1150 | - * [#x1154-#x1155] | #x1159 | [#x115F-#x1161] | #x1163 | #x1165 | #x1167 | - * #x1169 | [#x116D-#x116E] | [#x1172-#x1173] | #x1175 | #x119E | #x11A8 | - * #x11AB | [#x11AE-#x11AF] | [#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | - * #x11EB | #x11F0 | #x11F9 | [#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | - * [#x1F00-#x1F15] | [#x1F18-#x1F1D] | [#x1F20-#x1F45] | [#x1F48-#x1F4D] | - * [#x1F50-#x1F57] | #x1F59 | #x1F5B | #x1F5D | [#x1F5F-#x1F7D] | - * [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | [#x1FC2-#x1FC4] | - * [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | [#x1FE0-#x1FEC] | - * [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | [#x212A-#x212B] | #x212E | - * [#x2180-#x2182] | [#x3041-#x3094] | [#x30A1-#x30FA] | [#x3105-#x312C] | - * [#xAC00-#xD7A3] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | - * [#x3021-#x3029] - * - * @return Random ID value - */ - - //Initialization of a generator of identifiers for all token SAML. - static { - loadRandomIdentifierGenerator(); - } - - /** - * Load random identifier generator. - * - *@throws STORKSAMLEngineRuntimeException the STORKSAML engine runtime exception - */ - private static void loadRandomIdentifierGenerator() { - try { - generator = new SecureRandomIdentifierGenerator(); - } catch (NoSuchAlgorithmException ex) { - LOG.error("Error init SecureRandomIdentifierGenerator", ex); - throw new STORKSAMLEngineRuntimeException(ex); - } - - } - - /** - * Creates the SAML object. - * - * @param qname the QName - * - * @return the XML object - */ - public static XMLObject createSamlObject(final QName qname) { - if (qname.toString().endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) - { - CustomAttributeQueryBuilder builder = new CustomAttributeQueryBuilder(); - return builder.buildObject(qname); - } - else - { - return Configuration.getBuilderFactory().getBuilder(qname).buildObject( - qname); - } - } - - /** - * Creates the SAML object. - * - * @param qname the quality name - * @param qname1 the qname1 - * - * @return the xML object - */ - public static XMLObject createSamlObject(final QName qname, - final QName qname1) { - return Configuration.getBuilderFactory().getBuilder(qname1) - .buildObject(qname, qname1); - } - - /** - * Encode value with an specific algorithm. - * - * @param value the value - * @param alg the algorithm - * - * @return the string - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static String encode(final String value, final String alg) - throws STORKSAMLEngineException { - LOG.debug("Encode value with " + alg + " algorithm."); - byte[] buffer; - final StringBuffer hash = new StringBuffer(""); - try { - buffer = value.getBytes(UTF_8); - MessageDigest msgDig; - msgDig = MessageDigest.getInstance(alg); - msgDig.update(buffer); - final byte[] digest = msgDig.digest(); - final int signedByte = 0xff; - for (byte aux : digest) { - final int byt = aux & signedByte; - if (Integer.toHexString(byt).length() == 1) { - hash.append('0'); - } - hash.append(Integer.toHexString(byt)); - } - } catch (UnsupportedEncodingException e1) { - LOG.error("UnsupportedEncodingException: " + UTF_8); - throw new STORKSAMLEngineException(e1); - } catch (NoSuchAlgorithmException e) { - LOG.error("NoSuchAlgorithmException: " + alg); - throw new STORKSAMLEngineException(e); - } - return hash.toString(); - } - - /** - * Generate assertion. - * - * @param version the version - * @param identifier the identifier - * @param issueInstant the issue instant - * @param issuer the issuer - * - * @return the assertion - */ - public static Assertion generateAssertion(final SAMLVersion version, - final String identifier, final DateTime issueInstant, - final Issuer issuer) { - final AssertionBuilder assertionBuilder = new AssertionBuilder(); - final Assertion assertion = assertionBuilder.buildObject(); - assertion.setVersion(version); - assertion.setID(identifier); - assertion.setIssueInstant(issueInstant); - // - assertion.setIssuer(issuer); - return assertion; - } - - /** - * Generate authentication statement. - * - * @param authnInstant the authentication instant - * @param authnContext the authentication context - * - * @return the authentication statement - */ - public static AuthnStatement generateAthnStatement(final DateTime authnInstant, - final AuthnContext authnContext) { - // - final AuthnStatement authnStatement = (AuthnStatement) SAMLEngineUtils - .createSamlObject(AuthnStatement.DEFAULT_ELEMENT_NAME); - authnStatement.setAuthnInstant(authnInstant); - authnStatement.setAuthnContext(authnContext); - return authnStatement; - } - - /** - * Generate attribute from a list of values. - * - * @param name the name of the attribute. - * @param status the status of the parameter: "Available", "NotAvailable" or - * "Withheld". - * @param values the value of the attribute. - * @param isHashing the is hashing with "SHA-512" algorithm. - * @return the attribute - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static Attribute generateAttrComplex(final String name, - final String status, final Map values, - final boolean isHashing) throws STORKSAMLEngineException { - LOG.debug("Generate attribute complex: " + name); - final Attribute attribute = (Attribute) SAMLEngineUtils - .createSamlObject(Attribute.DEFAULT_ELEMENT_NAME); - - attribute.setName(name); - attribute.setNameFormat(Attribute.URI_REFERENCE); - attribute.getUnknownAttributes().put( - new QName(SAMLCore.STORK10_NS.getValue(), "AttributeStatus", - SAMLCore.STORK10_PREFIX.getValue()), status); - - if (!values.isEmpty()) { - LOG.debug("Add attribute values."); - // Create an attribute that contains all XSAny elements. - final XSAny attrValue = (XSAny) SAMLEngineUtils.createSamlObject( - AttributeValue.DEFAULT_ELEMENT_NAME, XSAny.TYPE_NAME); - final Iterator> iterator = values.entrySet() - .iterator(); - while (iterator.hasNext()) { - final Map.Entry pairs = iterator.next(); - final String value = pairs.getValue(); - - if (StringUtils.isNotBlank(value)) { - // Create the attribute statement - final XSAny attrValueSimple = (XSAny) SAMLEngineUtils - .createSamlObject(new QName(SAMLCore.STORK10_NS.getValue(), - pairs.getKey().toString(), - SAMLCore.STORK10_PREFIX.getValue()), XSAny.TYPE_NAME); - // if it's necessary encode the information. - if (isHashing) { - attrValueSimple - .setTextContent(encode(value, SHA_512)); - } else { - attrValueSimple.setTextContent(value); - } - attrValue.getUnknownXMLObjects().add(attrValueSimple); - attribute.getAttributeValues().add(attrValue); - } - } - - } - return attribute; - } - - /** - * Generate extension. - * - * @return the extensions - */ - public static Extensions generateExtension() { - final ExtensionsBuilder extensionsBuilder = new ExtensionsBuilder(); - return extensionsBuilder.buildObject( - "urn:oasis:names:tc:SAML:2.0:protocol", "Extensions", "saml2p"); - } - - /** - * Generate issuer. - * - * @return the issuer - */ - public static Issuer generateIssuer() { - return (Issuer) SAMLEngineUtils - .createSamlObject(Issuer.DEFAULT_ELEMENT_NAME); - } - - /** - * Generate key info. - * - * @return the key info - */ - public static KeyInfo generateKeyInfo() { - return (KeyInfo) SAMLEngineUtils - .createSamlObject(KeyInfo.DEFAULT_ELEMENT_NAME); - } - - /** - * Generate name id. - * - * @return the name id - */ - public static NameID generateNameID() { - return (NameID) SAMLEngineUtils - .createSamlObject(NameID.DEFAULT_ELEMENT_NAME); - } - - /** - * Generate name id. - * - * @param nameQualifier the name qualifier - * @param format the format - * @param spNameQualifier the sP name qualifier - * - * @return the name id - */ - public static NameID generateNameID(final String nameQualifier, - final String format, final String spNameQualifier) { - // - final NameID nameId = (NameID) Configuration.getBuilderFactory() - .getBuilder(NameID.DEFAULT_ELEMENT_NAME).buildObject( - NameID.DEFAULT_ELEMENT_NAME); - // optional - nameId.setNameQualifier(nameQualifier); - // optional - nameId.setFormat(format); - // optional - nameId.setSPNameQualifier(spNameQualifier); - return nameId; - } - - /** - * Generate NCName. - * - * @return the string - */ - public static String generateNCName() { - return generator.generateIdentifier(); - } - - /** - * Generate the quality authentication assurance level. - * - * @param qaal the level of quality authentication assurance. - * - * @return the quality authentication assurance attribute - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static QAAAttribute generateQAAAttribute(final int qaal) - throws STORKSAMLEngineException { - LOG.debug("Generate QAAAttribute."); - - final QAAAttribute qaaAttribute = (QAAAttribute) SAMLEngineUtils - .createSamlObject(QAAAttribute.DEF_ELEMENT_NAME); - qaaAttribute.setQaaLevel(String.valueOf(qaal)); - return qaaAttribute; - } - - /** - * Generate requested attribute. - * - * @param name the name - * @param friendlyName the friendly name - * @param isRequired the is required - * @param value the value - * - * @return the requested attribute - */ - public static RequestedAttribute generateReqAuthnAttributeSimple( - final String name, final String friendlyName, - final String isRequired, final List value) { - LOG.debug("Generate the requested attribute."); - - final RequestedAttribute requested = (RequestedAttribute) SAMLEngineUtils - .createSamlObject(RequestedAttribute.DEF_ELEMENT_NAME); - requested.setName(name); - requested.setNameFormat(RequestedAttribute.URI_REFERENCE); - - requested.setFriendlyName(friendlyName); - - requested.setIsRequired(isRequired); - - // The value is optional in an authentication request. - if (!value.isEmpty()) { - for (int nextValue = 0; nextValue < value.size(); nextValue++) { - final String valor = value.get(nextValue); - if (StringUtils.isNotBlank(valor)) { - - if(!name.equals("http://www.stork.gov.eu/1.0/signedDoc")){ - - // Create the attribute statement - final XSAny attrValue = (XSAny) SAMLEngineUtils - .createSamlObject( - new QName(SAMLCore.STORK10_NS.getValue(), - "AttributeValue", - SAMLCore.STORK10_PREFIX.getValue()), - XSAny.TYPE_NAME); - - attrValue.setTextContent(valor.trim()); - requested.getAttributeValues().add(attrValue); - - }else{ - - DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); - domFactory.setNamespaceAware(true); - Document document = null; - DocumentBuilder builder; - - // Parse the signedDoc value into an XML DOM Document - try { - builder = domFactory.newDocumentBuilder(); - InputStream is; - is = new ByteArrayInputStream(valor.trim().getBytes(UTF_8)); - document = builder.parse(is); - is.close(); - } catch (SAXException e1) { - LOG.error("SAX Error while parsing signModule attribute", e1); - throw new STORKSAMLEngineRuntimeException(e1); - } catch (ParserConfigurationException e2) { - LOG.error("Parser Configuration Error while parsing signModule attribute", e2); - throw new STORKSAMLEngineRuntimeException(e2); - } catch (UnsupportedEncodingException e3) { - LOG.error("Unsupported encoding Error while parsing signModule attribute", e3); - throw new STORKSAMLEngineRuntimeException(e3); - } catch (IOException e4) { - LOG.error("IO Error while parsing signModule attribute", e4); - throw new STORKSAMLEngineRuntimeException(e4); - } - - // Create the XML statement(this will be overwritten with the previous DOM structure) - final XSAny xmlValue = (XSAny) SAMLEngineUtils - .createSamlObject( - new QName(SAMLCore.STORK10_NS.getValue(), - "XMLValue", - SAMLCore.STORK10_PREFIX.getValue()), - XSAny.TYPE_NAME); - - //Set the signedDoc XML content to this element - xmlValue.setDOM(document.getDocumentElement()); - - // Create the attribute statement - final XSAny attrValue = (XSAny) SAMLEngineUtils - .createSamlObject( - new QName(SAMLCore.STORK10_NS.getValue(), - "AttributeValue", - SAMLCore.STORK10_PREFIX.getValue()), - XSAny.TYPE_NAME); - - //Add previous signedDocXML to the AttributeValue Element - attrValue.getUnknownXMLObjects().add(xmlValue); - - requested.getAttributeValues().add(attrValue); - } - - - } - } - } - - return requested; - } - - /** - * Generate response. - * - * @param version the version - * @param identifier the identifier - * @param issueInstant the issue instant - * @param status the status - * - * @return the response - */ - public static Response generateResponse(final SAMLVersion version, - final String identifier, final DateTime issueInstant, - final Status status) { - final Response response = (Response) SAMLEngineUtils - .createSamlObject(Response.DEFAULT_ELEMENT_NAME); - response.setID(identifier); - response.setIssueInstant(issueInstant); - response.setStatus(status); - return response; - } - - /** - * Method that generates a SAML Authentication Request basing on the - * provided information. - * - * @param identifier the identifier - * @param version the version - * @param issueInstant the issue instant - * - * @return the authentication request - */ - public static AuthnRequest generateSAMLAuthnRequest(final String identifier, - final SAMLVersion version, final DateTime issueInstant) { - LOG.debug("Generate basic authentication request."); - final AuthnRequest authnRequest = (AuthnRequest) SAMLEngineUtils - .createSamlObject(AuthnRequest.DEFAULT_ELEMENT_NAME); - - authnRequest.setID(identifier); - authnRequest.setVersion(version); - authnRequest.setIssueInstant(issueInstant); - return authnRequest; - } - - public static CustomAttributeQuery generateSAMLAttrQueryRequest(final String identifier, - final SAMLVersion version, final DateTime issueInstant) { - LOG.debug("Generate attribute query request."); - final CustomAttributeQuery attrQueryRequest = (CustomAttributeQuery) SAMLEngineUtils - .createSamlObject(CustomAttributeQuery.DEFAULT_ELEMENT_NAME); - - attrQueryRequest.setID(identifier); - attrQueryRequest.setVersion(version); - attrQueryRequest.setIssueInstant(issueInstant); - return attrQueryRequest; - } - - public static LogoutRequest generateSAMLLogoutRequest(final String identifier, - final SAMLVersion version, final DateTime issueInstant) { - LOG.debug("Generate logout request."); - final LogoutRequest logoutRequest = (LogoutRequest)SAMLEngineUtils. - createSamlObject(LogoutRequest.DEFAULT_ELEMENT_NAME); - - - logoutRequest.setID(identifier); - logoutRequest.setVersion(version); - logoutRequest.setIssueInstant(issueInstant); - return logoutRequest; - } - - public static LogoutResponse generateSAMLLogoutResponse(final String identifier, - final SAMLVersion version, final DateTime issueInstant, - final Status status, final String inResponseTo) { - LOG.debug("Generate logout response."); - final LogoutResponse logoutResponse = (LogoutResponse)SAMLEngineUtils. - createSamlObject(LogoutResponse.DEFAULT_ELEMENT_NAME); - - logoutResponse.setInResponseTo(inResponseTo); - logoutResponse.setStatus(status); - logoutResponse.setID(identifier); - logoutResponse.setVersion(version); - logoutResponse.setIssueInstant(issueInstant); - return logoutResponse; - } - - /** - * Generate service provider application. - * - * @param spApplication the service provider application - * - * @return the sP application - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static SPApplication generateSPApplication(final String spApplication) - throws STORKSAMLEngineException { - LOG.debug("Generate SPApplication."); - - final SPApplication applicationAttr = (SPApplication) SAMLEngineUtils - .createSamlObject(SPApplication.DEF_ELEMENT_NAME); - applicationAttr.setSPApplication(spApplication); - return applicationAttr; - } - - /** - * Generate service provider country. - * - * @param spCountry the service provider country - * - * @return the service provider country - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static SPCountry generateSPCountry(final String spCountry) - throws STORKSAMLEngineException { - LOG.debug("Generate SPApplication."); - - final SPCountry countryAttribute = (SPCountry) SAMLEngineUtils - .createSamlObject(SPCountry.DEF_ELEMENT_NAME); - countryAttribute.setSPCountry(spCountry); - return countryAttribute; - } - - /** - * Generate service provider institution. - * - * @param spInstitution the service provider institution - * - * @return the service provider institution - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static SPInstitution generateSPInstitution(final String spInstitution) - throws STORKSAMLEngineException { - LOG.debug("Generate SPInstitution."); - - final SPInstitution institutionAttr = (SPInstitution) SAMLEngineUtils - .createSamlObject(SPInstitution.DEF_ELEMENT_NAME); - institutionAttr.setSPInstitution(spInstitution); - return institutionAttr; - } - - /** - * Generate service provider sector. - * - * @param spSector the service provider sector - * - * @return the service provider sector - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static SPSector generateSPSector(final String spSector) - throws STORKSAMLEngineException { - LOG.debug("Generate SPSector."); - - final SPSector sectorAttribute = (SPSector) SAMLEngineUtils - .createSamlObject(SPSector.DEF_ELEMENT_NAME); - sectorAttribute.setSPSector(spSector); - return sectorAttribute; - } - - /** - * Generate status. - * - * @param statusCode the status code - * - * @return the status - */ - public static Status generateStatus(final StatusCode statusCode) { - final Status status = (Status) SAMLEngineUtils - .createSamlObject(Status.DEFAULT_ELEMENT_NAME); - status.setStatusCode(statusCode); - return status; - } - - /** - * Generate status code. - * - * @param value the value - * - * @return the status code - */ - public static StatusCode generateStatusCode(final String value) { - final StatusCode statusCode = (StatusCode) SAMLEngineUtils - .createSamlObject(StatusCode.DEFAULT_ELEMENT_NAME); - statusCode.setValue(value); - return statusCode; - } - - /** - * Generate status message. - * - * @param message the message - * - * @return the status message - */ - public static StatusMessage generateStatusMessage(final String message) { - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .createSamlObject(StatusMessage.DEFAULT_ELEMENT_NAME); - statusMessage.setMessage(message); - return statusMessage; - } - - /** - * Generate subject. - * - * @return the subject - */ - public static Subject generateSubject() { - return (Subject) SAMLEngineUtils - .createSamlObject(Subject.DEFAULT_ELEMENT_NAME); - } - - /** - * Generate subject confirmation. - * - * @param method the method - * @param data the data - * - * @return the subject confirmation - */ - public static SubjectConfirmation generateSubjectConfirmation( - final String method, final SubjectConfirmationData data) { - final SubjectConfirmation subjectConf = (SubjectConfirmation) Configuration - .getBuilderFactory().getBuilder( - SubjectConfirmation.DEFAULT_ELEMENT_NAME).buildObject( - SubjectConfirmation.DEFAULT_ELEMENT_NAME); - - subjectConf.setMethod(method); - - subjectConf.setSubjectConfirmationData(data); - - return subjectConf; - } - - /** - * Generate subject confirmation data. - * - * @param notOnOrAfter the not on or after - * @param recipient the recipient - * @param inResponseTo the in response to - * - * @return the subject confirmation data - */ - public static SubjectConfirmationData generateSubjectConfirmationData( - final DateTime notOnOrAfter, final String recipient, - final String inResponseTo) { - final SubjectConfirmationData subjectConfData = (SubjectConfirmationData) SAMLEngineUtils - .createSamlObject(SubjectConfirmationData.DEFAULT_ELEMENT_NAME); - subjectConfData.setNotOnOrAfter(notOnOrAfter); - subjectConfData.setRecipient(recipient); - subjectConfData.setInResponseTo(inResponseTo); - return subjectConfData; - } - - /** - * Generate subject locality. - * - * @param address the address - * - * @return the subject locality - */ - public static SubjectLocality generateSubjectLocality(final String address) { - final SubjectLocality subjectLocality = (SubjectLocality) SAMLEngineUtils - .createSamlObject(SubjectLocality.DEFAULT_ELEMENT_NAME); - subjectLocality.setAddress(address); - return subjectLocality; - } - - /** - * Method that returns the current time. - * - * @return the current time - */ - public static DateTime getCurrentTime() { - return new DateTime(); - } - - /** - * Instantiates a new SAML engine utilities. - */ - private SAMLEngineUtils() { - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java deleted file mode 100644 index 6bdf7b320..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java +++ /dev/null @@ -1,3744 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringWriter; -import java.io.UnsupportedEncodingException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import javax.xml.namespace.QName; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerConfigurationException; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.lang.StringUtils; -import org.bouncycastle.jce.X509Principal; -import org.joda.time.DateTime; -import org.opensaml.Configuration; -import org.opensaml.common.SAMLVersion; -import org.opensaml.common.SignableSAMLObject; -import org.opensaml.common.xml.SAMLConstants; -import org.opensaml.saml2.common.Extensions; -import org.opensaml.saml2.core.Assertion; -import org.opensaml.saml2.core.Attribute; -import org.opensaml.saml2.core.AttributeStatement; -import org.opensaml.saml2.core.AttributeValue; -import org.opensaml.saml2.core.Audience; -import org.opensaml.saml2.core.AudienceRestriction; -import org.opensaml.saml2.core.AuthnContext; -import org.opensaml.saml2.core.AuthnContextDecl; -import org.opensaml.saml2.core.AuthnRequest; -import org.opensaml.saml2.core.AuthnStatement; -import org.opensaml.saml2.core.Conditions; -import org.opensaml.saml2.core.Issuer; -import org.opensaml.saml2.core.LogoutRequest; -import org.opensaml.saml2.core.LogoutResponse; -import org.opensaml.saml2.core.NameID; -import org.opensaml.saml2.core.OneTimeUse; -import org.opensaml.saml2.core.Response; -import org.opensaml.saml2.core.Status; -import org.opensaml.saml2.core.StatusCode; -import org.opensaml.saml2.core.StatusMessage; -import org.opensaml.saml2.core.Subject; -import org.opensaml.saml2.core.SubjectConfirmation; -import org.opensaml.saml2.core.SubjectConfirmationData; -import org.opensaml.saml2.core.SubjectLocality; -import org.opensaml.saml2.core.impl.SubjectConfirmationBuilder; -import org.opensaml.xml.Namespace; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.schema.XSAny; -import org.opensaml.xml.schema.impl.XSAnyBuilder; -import org.opensaml.xml.schema.impl.XSAnyImpl; -import org.opensaml.xml.schema.impl.XSAnyMarshaller; -import org.opensaml.xml.schema.impl.XSAnyUnmarshaller; -import org.opensaml.xml.schema.impl.XSStringImpl; -import org.opensaml.xml.signature.KeyInfo; -import org.opensaml.xml.util.Base64; -import org.opensaml.xml.validation.ValidationException; -import org.opensaml.xml.validation.Validator; -import org.opensaml.xml.validation.ValidatorSuite; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.xml.sax.SAXException; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -import eu.stork.peps.auth.commons.STORKAttrQueryRequest; -import eu.stork.peps.auth.commons.STORKAttrQueryResponse; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import eu.stork.peps.auth.commons.STORKAuthnResponse; -import eu.stork.peps.auth.commons.STORKLogoutRequest; -import eu.stork.peps.auth.commons.STORKLogoutResponse; -import eu.stork.peps.auth.engine.core.AuthenticationAttributes; -import eu.stork.peps.auth.engine.core.CitizenCountryCode; -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.CustomRequestAbstractType; -import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; -import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; -import eu.stork.peps.auth.engine.core.EIDSectorShare; -import eu.stork.peps.auth.engine.core.QAAAttribute; -import eu.stork.peps.auth.engine.core.RequestedAttribute; -import eu.stork.peps.auth.engine.core.RequestedAttributes; -import eu.stork.peps.auth.engine.core.SAMLCore; -import eu.stork.peps.auth.engine.core.SPApplication; -import eu.stork.peps.auth.engine.core.SPCountry; -import eu.stork.peps.auth.engine.core.SPID; -import eu.stork.peps.auth.engine.core.SPInformation; -import eu.stork.peps.auth.engine.core.SPInstitution; -import eu.stork.peps.auth.engine.core.SPSector; -import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; -import eu.stork.peps.auth.engine.core.impl.AuthenticationAttributesBuilder; -import eu.stork.peps.auth.engine.core.impl.AuthenticationAttributesMarshaller; -import eu.stork.peps.auth.engine.core.impl.AuthenticationAttributesUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.CitizenCountryCodeBuilder; -import eu.stork.peps.auth.engine.core.impl.CitizenCountryCodeMarshaller; -import eu.stork.peps.auth.engine.core.impl.CitizenCountryCodeUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.EIDCrossBorderShareBuilder; -import eu.stork.peps.auth.engine.core.impl.EIDCrossBorderShareMarshaller; -import eu.stork.peps.auth.engine.core.impl.EIDCrossBorderShareUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.EIDCrossSectorShareBuilder; -import eu.stork.peps.auth.engine.core.impl.EIDCrossSectorShareMarshaller; -import eu.stork.peps.auth.engine.core.impl.EIDCrossSectorShareUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.EIDSectorShareBuilder; -import eu.stork.peps.auth.engine.core.impl.EIDSectorShareMarshaller; -import eu.stork.peps.auth.engine.core.impl.EIDSectorShareUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.QAAAttributeBuilder; -import eu.stork.peps.auth.engine.core.impl.QAAAttributeMarshaller; -import eu.stork.peps.auth.engine.core.impl.QAAAttributeUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.RequestedAttributeBuilder; -import eu.stork.peps.auth.engine.core.impl.RequestedAttributeMarshaller; -import eu.stork.peps.auth.engine.core.impl.RequestedAttributeUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.RequestedAttributesBuilder; -import eu.stork.peps.auth.engine.core.impl.RequestedAttributesMarshaller; -import eu.stork.peps.auth.engine.core.impl.RequestedAttributesUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SPApplicationBuilder; -import eu.stork.peps.auth.engine.core.impl.SPApplicationMarshaller; -import eu.stork.peps.auth.engine.core.impl.SPApplicationUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SPCountryBuilder; -import eu.stork.peps.auth.engine.core.impl.SPCountryMarshaller; -import eu.stork.peps.auth.engine.core.impl.SPCountryUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SPIDBuilder; -import eu.stork.peps.auth.engine.core.impl.SPIDMarshaller; -import eu.stork.peps.auth.engine.core.impl.SPIDUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SPInformationBuilder; -import eu.stork.peps.auth.engine.core.impl.SPInformationMarshaller; -import eu.stork.peps.auth.engine.core.impl.SPInformationUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SPInstitutionBuilder; -import eu.stork.peps.auth.engine.core.impl.SPInstitutionMarshaller; -import eu.stork.peps.auth.engine.core.impl.SPInstitutionUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.SPSectorBuilder; -import eu.stork.peps.auth.engine.core.impl.SPSectorMarshaller; -import eu.stork.peps.auth.engine.core.impl.SPSectorUnmarshaller; -import eu.stork.peps.auth.engine.core.impl.VIDPAuthenticationAttributesBuilder; -import eu.stork.peps.auth.engine.core.impl.VIDPAuthenticationAttributesMarshaller; -import eu.stork.peps.auth.engine.core.impl.VIDPAuthenticationAttributesUnmarshaller; -import eu.stork.peps.auth.engine.core.validator.CustomAttributeQueryValidator; -import eu.stork.peps.auth.engine.core.validator.ExtensionsSchemaValidator; -import eu.stork.peps.auth.engine.core.validator.MultipleAssertionResponseValidator; -import eu.stork.peps.auth.engine.core.validator.QAAAttributeSchemaValidator; -import eu.stork.peps.exceptions.SAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; - -/** - * Class that wraps the operations over SAML tokens, both generation and - * validation of SAML STORK requests and SAML STORK responses. Complaint with - * "OASIS Secure Assertion Markup Language (SAML) 2.0, May 2005", but taking - * into account STORK specific requirements. - * - * @author fjquevedo - * @author iinigo - */ -public final class STORKSAMLEngine extends SAMLEngine { - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(STORKSAMLEngine.class.getName()); - - private static final String ATTRIBUTE_EMPTY_LITERAL = "Attribute name is null or empty."; - /** - * Gets the single instance of STORKSAMLEngine. - * - * @param nameInstance the name instance - * - * @return single instance of STORKSAMLEngine - */ - public static synchronized STORKSAMLEngine getInstance( - final String nameInstance) { - STORKSAMLEngine engine = null; - LOG.info("Get instance: " + nameInstance); - try { - engine = new STORKSAMLEngine(nameInstance.trim()); - } catch (Exception e) { - LOG.error("Error getting instance: " + nameInstance); - e.printStackTrace(); - } - return engine; - } - - /** - * Instantiate a new STORKSAML engine. - * - * @param nameInstance the name instance - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private STORKSAMLEngine(final String nameInstance) - throws STORKSAMLEngineException { - // Initialization OpenSAML. - super(nameInstance); - LOG.info("Register STORK objects provider."); - Configuration.registerObjectProvider(QAAAttribute.DEF_ELEMENT_NAME, - new QAAAttributeBuilder(), new QAAAttributeMarshaller(), - new QAAAttributeUnmarshaller()); - - Configuration.registerObjectProvider(EIDSectorShare.DEF_ELEMENT_NAME, - new EIDSectorShareBuilder(), new EIDSectorShareMarshaller(), - new EIDSectorShareUnmarshaller()); - - Configuration.registerObjectProvider( - EIDCrossSectorShare.DEF_ELEMENT_NAME, - new EIDCrossSectorShareBuilder(), - new EIDCrossSectorShareMarshaller(), - new EIDCrossSectorShareUnmarshaller()); - - Configuration.registerObjectProvider( - EIDCrossBorderShare.DEF_ELEMENT_NAME, - new EIDCrossBorderShareBuilder(), - new EIDCrossBorderShareMarshaller(), - new EIDCrossBorderShareUnmarshaller()); - - Configuration.registerObjectProvider(SPSector.DEF_ELEMENT_NAME, - new SPSectorBuilder(), new SPSectorMarshaller(), - new SPSectorUnmarshaller()); - - Configuration.registerObjectProvider(SPInstitution.DEF_ELEMENT_NAME, - new SPInstitutionBuilder(), new SPInstitutionMarshaller(), - new SPInstitutionUnmarshaller()); - - Configuration.registerObjectProvider(SPApplication.DEF_ELEMENT_NAME, - new SPApplicationBuilder(), new SPApplicationMarshaller(), - new SPApplicationUnmarshaller()); - - Configuration.registerObjectProvider(SPCountry.DEF_ELEMENT_NAME, - new SPCountryBuilder(), new SPCountryMarshaller(), - new SPCountryUnmarshaller()); - - Configuration.registerObjectProvider(XSAny.TYPE_NAME, - new XSAnyBuilder(), new XSAnyMarshaller(), - new XSAnyUnmarshaller()); - - Configuration.registerObjectProvider( - RequestedAttribute.DEF_ELEMENT_NAME, - new RequestedAttributeBuilder(), - new RequestedAttributeMarshaller(), - new RequestedAttributeUnmarshaller()); - - Configuration.registerObjectProvider( - RequestedAttributes.DEF_ELEMENT_NAME, - new RequestedAttributesBuilder(), - new RequestedAttributesMarshaller(), - new RequestedAttributesUnmarshaller()); - - Configuration.registerObjectProvider( - AuthenticationAttributes.DEF_ELEMENT_NAME, - new AuthenticationAttributesBuilder(), - new AuthenticationAttributesMarshaller(), - new AuthenticationAttributesUnmarshaller()); - - Configuration.registerObjectProvider( - VIDPAuthenticationAttributes.DEF_ELEMENT_NAME, - new VIDPAuthenticationAttributesBuilder(), - new VIDPAuthenticationAttributesMarshaller(), - new VIDPAuthenticationAttributesUnmarshaller()); - - Configuration.registerObjectProvider( - CitizenCountryCode.DEF_ELEMENT_NAME, - new CitizenCountryCodeBuilder(), - new CitizenCountryCodeMarshaller(), - new CitizenCountryCodeUnmarshaller()); - - Configuration.registerObjectProvider( - SPID.DEF_ELEMENT_NAME, - new SPIDBuilder(), - new SPIDMarshaller(), - new SPIDUnmarshaller()); - - Configuration.registerObjectProvider( - SPInformation.DEF_ELEMENT_NAME, - new SPInformationBuilder(), - new SPInformationMarshaller(), - new SPInformationUnmarshaller()); - - LOG.info("Register STORK object validators."); - final ValidatorSuite validatorSuite = new ValidatorSuite( - QAAAttribute.DEF_LOCAL_NAME); - - validatorSuite.registerValidator(QAAAttribute.DEF_ELEMENT_NAME, - new QAAAttributeSchemaValidator()); - final Extensions extensions = SAMLEngineUtils.generateExtension(); - validatorSuite.registerValidator(extensions.getElementQName(), - new ExtensionsSchemaValidator()); - - Configuration.registerValidatorSuite( - "stork:QualityAuthenticationAssuranceLevel", validatorSuite); - - } - - /** - * Generate authentication response base. - * - * @param status the status - * @param assertConsumerURL the assert consumer URL. - * @param inResponseTo the in response to - * - * @return the response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Response genAuthnRespBase(final Status status, - final String assertConsumerURL, final String inResponseTo) - throws STORKSAMLEngineException { - LOG.debug("Generate Authentication Response base."); - final Response response = SAMLEngineUtils.generateResponse( - SAMLVersion.VERSION_20, SAMLEngineUtils.generateNCName(), - SAMLEngineUtils.getCurrentTime(), status); - - // Set name Spaces - this.setNameSpaces(response); - - // Mandatory STORK - LOG.debug("Generate Issuer"); - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - issuer.setValue(super.getSamlCoreProperties().getResponder()); - - // Format Entity Optional STORK - issuer.setFormat(super.getSamlCoreProperties().getFormatEntity()); - - response.setIssuer(issuer); - - // destination Mandatory Stork - response.setDestination(assertConsumerURL.trim()); - - // inResponseTo Mandatory Stork - response.setInResponseTo(inResponseTo.trim()); - - // Optional STORK - response.setConsent(super.getSamlCoreProperties() - .getConsentAuthnResponse()); - - return response; - } - - /** - * Generate attribute query response base. - * - * @param status the status - * @param destinationURL the assert consumer URL. - * @param inResponseTo the in response to - * - * @return the response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Response genAttrQueryRespBase(final Status status, - final String destinationURL, final String inResponseTo) - throws STORKSAMLEngineException { - LOG.debug("Generate Attribute query Response base."); - final Response response = SAMLEngineUtils.generateResponse( - SAMLVersion.VERSION_20, SAMLEngineUtils.generateNCName(), - SAMLEngineUtils.getCurrentTime(), status); - - // Set name Spaces - this.setNameSpaces(response); - - // Mandatory STORK - LOG.debug("Generate Issuer"); - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - issuer.setValue(super.getSamlCoreProperties().getResponder()); - - // Format Entity Optional STORK - issuer.setFormat(super.getSamlCoreProperties().getFormatEntity()); - - response.setIssuer(issuer); - - // destination Mandatory Stork - response.setDestination(destinationURL.trim()); - - // inResponseTo Mandatory Stork - response.setInResponseTo(inResponseTo.trim()); - - // Optional STORK - response.setConsent(super.getSamlCoreProperties() - .getConsentAuthnResponse()); - - return response; - } - - /** - * Generate assertion. - * - * @param ipAddress the IP address. - * @param assertConsumerURL the assert consumer URL. - * @param inResponseTo the in response to - * @param issuer the issuer - * @param notOnOrAfter the not on or after - * - * @return the assertion - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Assertion generateAssertion(final String ipAddress, - final String assertConsumerURL, final String inResponseTo, - final String issuer, final DateTime notOnOrAfter) - throws STORKSAMLEngineException { - LOG.info("Generate Assertion."); - - // Mandatory STORK - LOG.debug("Generate Issuer to Assertion"); - final Issuer issuerAssertion = SAMLEngineUtils.generateIssuer(); - issuerAssertion.setValue(super.getSamlCoreProperties().getResponder()); - - // Format Entity Optional STORK - issuerAssertion.setFormat(super.getSamlCoreProperties() - .getFormatEntity()); - - final Assertion assertion = SAMLEngineUtils.generateAssertion( - SAMLVersion.VERSION_20, SAMLEngineUtils.generateNCName(), - SAMLEngineUtils.getCurrentTime(), issuerAssertion); - - final Subject subject = SAMLEngineUtils.generateSubject(); - - // Mandatory STORK verified - // String format = NameID.UNSPECIFIED - // specification: 'SAML:2.0' exist - // opensaml: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" - // opensaml "urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" - final String format = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; - - final String nameQualifier = ""; - - LOG.debug("Generate NameID"); - final NameID nameId = SAMLEngineUtils.generateNameID(super - .getSamlCoreProperties().getResponder(), format, nameQualifier); - nameId.setValue(format); - subject.setNameID(nameId); - - // Mandatory if urn:oasis:names:tc:SAML:2.0:cm:bearer. - // Optional in other case. - LOG.debug("Generate SubjectConfirmationData."); - final SubjectConfirmationData dataBearer = SAMLEngineUtils - .generateSubjectConfirmationData(SAMLEngineUtils - .getCurrentTime(), assertConsumerURL, inResponseTo); - - // Mandatory if urn:oasis:names:tc:SAML:2.0:cm:bearer. - // Optional in other case. - LOG.debug("Generate SubjectConfirmation"); - final SubjectConfirmation subjectConf = SAMLEngineUtils - .generateSubjectConfirmation(SubjectConfirmation.METHOD_BEARER, - dataBearer); - - final ArrayList listSubjectConf = new ArrayList(); - listSubjectConf.add(subjectConf); - - for (final Iterator iter = listSubjectConf - .iterator(); iter.hasNext();) { - final SubjectConfirmation element = iter.next(); - - if (SubjectConfirmation.METHOD_BEARER.equals(element.getMethod())) { - // ipAddress Mandatory if method is Bearer. - - if (StringUtils.isBlank(ipAddress)) { - throw new STORKSAMLEngineException( - "ipAddress is null or empty"); - } - element.getSubjectConfirmationData().setAddress( - ipAddress.trim()); - } - - element.getSubjectConfirmationData() - .setRecipient(assertConsumerURL); - element.getSubjectConfirmationData().setNotOnOrAfter(notOnOrAfter); - } - - // The SAML 2.0 specification allows multiple SubjectConfirmations - subject.getSubjectConfirmations().addAll(listSubjectConf); - - // Mandatory Stork - assertion.setSubject(subject); - - // Conditions that MUST be evaluated when assessing the validity of - // and/or when using the assertion. - final Conditions conditions = this.generateConditions(SAMLEngineUtils - .getCurrentTime(), notOnOrAfter, issuer); - - assertion.setConditions(conditions); - - LOG.debug("Generate stork Authentication Statement."); - final AuthnStatement storkAuthnStat = this - .generateStorkAuthStatement(ipAddress); - assertion.getAuthnStatements().add(storkAuthnStat); - - return assertion; - } - - private String getAttributeName(final PersonalAttribute attribute) throws STORKSAMLEngineException { - if (StringUtils.isBlank(attribute.getName())) { - LOG.error(ATTRIBUTE_EMPTY_LITERAL); - throw new STORKSAMLEngineException(ATTRIBUTE_EMPTY_LITERAL); - } - - final String attributeName = super.getSamlCoreProperties() - .getProperty(attribute.getName()); - - if (StringUtils.isBlank(attributeName)) { - LOG.error("Attribute name: {} it is not known.", attribute - .getName()); - throw new STORKSAMLEngineException("Attribute name: " - + attribute.getName() + " it is not known."); - } - return attributeName; - } - /** - * Generate attribute statement. - * - * @param personalAttrList the personal attribute list - * @param isHashing the is hashing - * - * @return the attribute statement - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - * @throws IOException - */ - private AttributeStatement generateAttributeStatement( - final IPersonalAttributeList personalAttrList, - final boolean isHashing) throws STORKSAMLEngineException { - LOG.debug("Generate attribute statement"); - - final AttributeStatement attrStatement = (AttributeStatement) SAMLEngineUtils - .createSamlObject(AttributeStatement.DEFAULT_ELEMENT_NAME); - - for (PersonalAttribute attribute : personalAttrList) { - - String attributeName = getAttributeName(attribute); - - // Verification that only one value it's permitted, simple or - // complex, not both. - - final boolean simpleNull = (attribute.getValue() == null); - final boolean simpleEmpty = (simpleNull || (!simpleNull && attribute - .getValue().isEmpty())); - - final boolean complexNull = (attribute.getComplexValue() == null); - final boolean complexEmpty = (complexNull || (!complexNull && attribute - .getComplexValue().isEmpty())); - - if ((!simpleEmpty && !complexEmpty)) { - throw new STORKSAMLEngineException( - "Attribute name: " - + attribute.getName() - + " must be contain one value, simple or complex value."); - } else { - - if (!simpleEmpty) { - attrStatement.getAttributes().add( - this.generateAttrSimple(attributeName, attribute - .getStatus(), attribute.getValue(), - isHashing)); - } else if (!complexEmpty) { - attrStatement.getAttributes().add( - SAMLEngineUtils.generateAttrComplex(attributeName, - attribute.getStatus(), attribute - .getComplexValue(), isHashing)); - } else if (!simpleNull) { - attrStatement.getAttributes().add( - this.generateAttrSimple(attributeName, attribute - .getStatus(), new ArrayList(), - isHashing)); - } else { - // Add attribute complex. - attrStatement.getAttributes().add( - SAMLEngineUtils.generateAttrComplex(attributeName, - attribute.getStatus(), - new HashMap(), isHashing)); - } - } - } - return attrStatement; - } - private XSAny createAttributeValueForSignedDoc(final String value, final boolean isHashing) throws STORKSAMLEngineException { - DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); - domFactory.setNamespaceAware(true); - Document document = null; - DocumentBuilder builder; - - // Parse the signedDoc value into an XML DOM Document - try { - builder = domFactory.newDocumentBuilder(); - InputStream is; - is = new ByteArrayInputStream(value.trim().getBytes("UTF-8")); - document = builder.parse(is); - is.close(); - } catch (SAXException e1) { - LOG.error("SAX Error while parsing signModule attribute", e1); - throw new STORKSAMLEngineRuntimeException(e1); - } catch (ParserConfigurationException e2) { - LOG.error("Parser Configuration Error while parsing signModule attribute", e2); - throw new STORKSAMLEngineRuntimeException(e2); - } catch (UnsupportedEncodingException e3) { - LOG.error("Unsupported encoding Error while parsing signModule attribute", e3); - throw new STORKSAMLEngineRuntimeException(e3); - } catch (IOException e4) { - LOG.error("IO Error while parsing signModule attribute", e4); - throw new STORKSAMLEngineRuntimeException(e4); - } - - // Create the attribute statement - final XSAny xmlValue = (XSAny) SAMLEngineUtils - .createSamlObject( - AttributeValue.DEFAULT_ELEMENT_NAME, - XSAny.TYPE_NAME); - - //Set the signedDoc XML content to this element - xmlValue.setDOM(document.getDocumentElement()); - - // Create the attribute statement - final XSAny attrValue = (XSAny) SAMLEngineUtils - .createSamlObject( - AttributeValue.DEFAULT_ELEMENT_NAME, - XSAny.TYPE_NAME); - - //Add previous signedDocXML to the AttributeValue Element - - // if it's necessary encode the information. - if (!isHashing) { - attrValue.getUnknownXMLObjects().add(xmlValue); - } - return attrValue; - } - - private XSAny createAttributeValueForNonSignedDoc(final String value, final boolean isHashing) throws STORKSAMLEngineException { - // Create the attribute statement - final XSAny attrValue = (XSAny) SAMLEngineUtils - .createSamlObject( - AttributeValue.DEFAULT_ELEMENT_NAME, - XSAny.TYPE_NAME); - // if it's necessary encode the information. - if (isHashing) { - attrValue.setTextContent(SAMLEngineUtils.encode(value, SAMLEngineUtils.SHA_512)); - } else { - attrValue.setTextContent(value); - } - return attrValue; - } - - /** - * Generate attribute from a list of values. - * - * @param name the name of the attribute. - * @param values the value of the attribute. - * @param isHashing the is hashing with "SHA-512" algorithm. - * @param status the status of the parameter: "Available", "NotAvailable" or - * "Withheld". - * - * @return the attribute - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Attribute generateAttrSimple(final String name, - final String status, final List values, - final boolean isHashing) throws STORKSAMLEngineException { - LOG.debug("Generate attribute simple: " + name); - final Attribute attribute = (Attribute) SAMLEngineUtils - .createSamlObject(Attribute.DEFAULT_ELEMENT_NAME); - - attribute.setName(name); - attribute.setNameFormat(Attribute.URI_REFERENCE); - - attribute.getUnknownAttributes().put( - new QName(SAMLCore.STORK10_NS.getValue(), "AttributeStatus", - SAMLCore.STORK10_PREFIX.getValue()), status); - - if (values != null) { - LOG.debug("Add attribute values."); - for (int i = 0; i < values.size(); i++) { - final String value = values.get(i); - if (StringUtils.isNotBlank(value)) { - XSAny attrValue = null; - if (!name.equals("http://www.stork.gov.eu/1.0/signedDoc")) { - // Create the attribute statement - attrValue = createAttributeValueForNonSignedDoc(value, isHashing); - - } else { - attrValue = createAttributeValueForSignedDoc(value, isHashing); - attribute.getAttributeValues().add(attrValue); - } - attribute.getAttributeValues().add(attrValue); - } - } - } - return attribute; - } - - /** - * Generate conditions that MUST be evaluated when assessing the validity of - * and/or when using the assertion. - * - * @param notBefore the not before - * @param notOnOrAfter the not on or after - * @param audienceURI the audience URI. - * - * @return the conditions - */ - private Conditions generateConditions(final DateTime notBefore, - final DateTime notOnOrAfter, final String audienceURI) { - LOG.debug("Generate conditions."); - final Conditions conditions = (Conditions) SAMLEngineUtils - .createSamlObject(Conditions.DEFAULT_ELEMENT_NAME); - conditions.setNotBefore(notBefore); - conditions.setNotOnOrAfter(notOnOrAfter); - - final AudienceRestriction restrictions = (AudienceRestriction) SAMLEngineUtils - .createSamlObject(AudienceRestriction.DEFAULT_ELEMENT_NAME); - - final Audience audience = (Audience) SAMLEngineUtils - .createSamlObject(Audience.DEFAULT_ELEMENT_NAME); - audience.setAudienceURI(audienceURI); - - restrictions.getAudiences().add(audience); - conditions.getAudienceRestrictions().add(restrictions); - - if (super.getSamlCoreProperties().isOneTimeUse()) { - final OneTimeUse oneTimeUse = (OneTimeUse) SAMLEngineUtils - .createSamlObject(OneTimeUse.DEFAULT_ELEMENT_NAME); - conditions.getConditions().add(oneTimeUse); - } - return conditions; - } - - /** - * Generate personal attribute list. - * - * @param assertion the assertion - * - * @return the personal attribute list - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private IPersonalAttributeList generatePersonalAttributeList( - final Assertion assertion) throws STORKSAMLEngineException { - LOG.debug("Generate personal attribute list from XMLObject."); - final List listExtensions = assertion.getOrderedChildren(); - - boolean find = false; - AttributeStatement requestedAttr = null; - - // Search the attribute statement. - for (int i = 0; i < listExtensions.size() && !find; i++) { - final XMLObject xml = listExtensions.get(i); - if (xml instanceof AttributeStatement) { - requestedAttr = (AttributeStatement) xml; - find = true; - } - } - - if (!find) { - LOG.error("Error: AttributeStatement it's not present."); - throw new STORKSAMLEngineException( - "AttributeStatement it's not present."); - } - - final List reqAttrs = requestedAttr.getAttributes(); - - final IPersonalAttributeList personalAttrList = new PersonalAttributeList(); - String attributeName; - - // Process the attributes. - for (int nextAttribute = 0; nextAttribute < reqAttrs.size(); nextAttribute++) { - final Attribute attribute = reqAttrs.get(nextAttribute); - - final PersonalAttribute personalAttribute = new PersonalAttribute(); - - attributeName = attribute.getName(); - personalAttribute.setName(attributeName.substring(attributeName - .lastIndexOf('/') + 1)); - - personalAttribute.setStatus(attribute.getUnknownAttributes().get( - new QName(SAMLCore.STORK10_NS.getValue(), - "AttributeStatus", SAMLCore.STORK10_PREFIX - .getValue()))); - - final ArrayList simpleValues = new ArrayList(); - final HashMap multiValues = new HashMap(); - - final List values = attribute.getOrderedChildren(); - - - // Process the values. - for (int nextValue = 0; nextValue < values.size(); nextValue++) { - - final XMLObject xmlObject = values.get(nextValue); - - if (xmlObject instanceof XSStringImpl) { - - simpleValues.add(((XSStringImpl) xmlObject).getValue()); - - } else if (xmlObject instanceof XSAnyImpl) { - - if (attributeName.equals("http://www.stork.gov.eu/1.0/signedDoc")) { - - final XSAnyImpl xmlString = (XSAnyImpl) values - .get(nextValue); - - TransformerFactory transFactory = TransformerFactory - .newInstance(); - Transformer transformer = null; - try { - transformer = transFactory.newTransformer(); - transformer.setOutputProperty( - OutputKeys.OMIT_XML_DECLARATION, "yes"); - } catch (TransformerConfigurationException e) { - LOG.error("Error transformer configuration exception", e); - } - StringWriter buffer = new StringWriter(); - try { - if (xmlString != null && xmlString.getUnknownXMLObjects() != null && xmlString.getUnknownXMLObjects().size() > 0 ){ - transformer.transform(new DOMSource(xmlString - .getUnknownXMLObjects().get(0).getDOM()), - new StreamResult(buffer)); - } - } catch (TransformerException e) { - LOG.error("Error transformer exception", e); - } - String str = buffer.toString(); - - simpleValues.add(str); - - } else if (isComplex(xmlObject)) - { - LOG.info(attributeName + " found"); - // Process complex value. - final XSAnyImpl complexValue = (XSAnyImpl) xmlObject; - - for (int nextComplexValue = 0; nextComplexValue < complexValue - .getUnknownXMLObjects().size(); nextComplexValue++) { - - final XSAnyImpl simple = (XSAnyImpl) complexValue - .getUnknownXMLObjects().get( - nextComplexValue); - - multiValues.put(simple.getElementQName() - .getLocalPart(), simple.getTextContent()); - } - - } - else { - // Process simple value. - simpleValues.add(((XSAnyImpl) xmlObject) - .getTextContent()); - } - - } else { - LOG.error("Error: attribute value it's unknown."); - throw new STORKSAMLEngineException( - "Attribute value it's unknown."); - } - } - - personalAttribute.setValue(simpleValues); - personalAttribute.setComplexValue(multiValues); - personalAttrList.add(personalAttribute); - } - - return personalAttrList; - } - - /** - * Generate stork authentication request. - * - * @param request the request that contain all parameters for generate an - * authentication request. - * - * @return the STORK authentication request that has been processed. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnRequest generateSTORKAuthnRequest( - final STORKAuthnRequest request) throws STORKSAMLEngineException { - LOG.info("Generate SAMLAuthnRequest."); - - // Validate Parameters mandatories - validateParamAuthnReq(request); - - final AuthnRequest authnRequestAux = SAMLEngineUtils - .generateSAMLAuthnRequest(SAMLEngineUtils.generateNCName(), - SAMLVersion.VERSION_20, SAMLEngineUtils - .getCurrentTime()); - - // Set name spaces. - setNameSpaces(authnRequestAux); - - // Add parameter Mandatory STORK - authnRequestAux.setForceAuthn(Boolean.TRUE); - - // Add parameter Mandatory STORK - authnRequestAux.setIsPassive(Boolean.FALSE); - - authnRequestAux.setAssertionConsumerServiceURL(request - .getAssertionConsumerServiceURL()); - - authnRequestAux.setProviderName(request.getProviderName()); - - // Add protocol binding - authnRequestAux.setProtocolBinding(super.getSamlCoreProperties() - .getProtocolBinding()); - - // Add parameter optional STORK - // Destination is mandatory if the destination is a C-PEPS - // The application must to know if the destination is a C-PEPS. - if (StringUtils.isNotBlank(request.getDestination())) { - authnRequestAux.setDestination(request.getDestination()); - } - - // Consent is optional. Set from SAMLEngine.xml - consent. - authnRequestAux.setConsent(super.getSamlCoreProperties() - .getConsentAuthnRequest()); - - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - - if(request.getIssuer()!=null){ - issuer.setValue(request.getIssuer()); - } else { - issuer.setValue(super.getSamlCoreProperties().getRequester()); - } - - // Optional STORK - final String formatEntity = super.getSamlCoreProperties() - .getFormatEntity(); - if (StringUtils.isNotBlank(formatEntity)) { - issuer.setFormat(formatEntity); - } - - authnRequestAux.setIssuer(issuer); - - // Generate stork extensions. - final Extensions storkExtensions = this - .generateSTORKExtensions(request); - // add the extensions to the SAMLAuthnRequest - authnRequestAux.setExtensions(storkExtensions); - - // the result contains an authentication request token (byte[]), - // identifier of the token, and all parameters from the request. - final STORKAuthnRequest authRequest = processExtensions(authnRequestAux - .getExtensions()); - - try { - authRequest.setTokenSaml(super.signAndMarshall(authnRequestAux)); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - - authRequest.setSamlId(authnRequestAux.getID()); - authRequest.setDestination(authnRequestAux.getDestination()); - authRequest.setAssertionConsumerServiceURL(authnRequestAux - .getAssertionConsumerServiceURL()); - - authRequest.setProviderName(authnRequestAux.getProviderName()); - authRequest.setIssuer(authnRequestAux.getIssuer().getValue()); - - return authRequest; - } - - /** - * Generate stork authentication response. - * - * @param request the request - * @param responseAuthReq the response authentication request - * @param ipAddress the IP address - * @param isHashing the is hashing - * - * @return the sTORK authentication response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnResponse generateSTORKAuthnResponse( - final STORKAuthnRequest request, - final STORKAuthnResponse responseAuthReq, final String ipAddress, - final boolean isHashing) throws STORKSAMLEngineException { - LOG.info("generateSTORKAuthnResponse"); - - // Validate parameters - validateParamResponse(request, responseAuthReq); - - // Mandatory SAML - LOG.debug("Generate StatusCode"); - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(StatusCode.SUCCESS_URI); - - LOG.debug("Generate Status"); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - LOG.debug("Generate StatusMessage"); - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(StatusCode.SUCCESS_URI); - - status.setStatusMessage(statusMessage); - - LOG.debug("Generate Response"); - - // RESPONSE - final Response response = genAuthnRespBase(status, request - .getAssertionConsumerServiceURL(), request.getSamlId()); - - DateTime notOnOrAfter = new DateTime(); - - notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() - .getTimeNotOnOrAfter()); - - final Assertion assertion = this.generateAssertion(ipAddress, request - .getAssertionConsumerServiceURL(), request.getSamlId(), request - .getIssuer(), notOnOrAfter); - - final AttributeStatement attrStatement = this - .generateAttributeStatement(responseAuthReq - .getPersonalAttributeList(), isHashing); - - assertion.getAttributeStatements().add(attrStatement); - - // Add assertions - response.getAssertions().add(assertion); - - final STORKAuthnResponse authresponse = new STORKAuthnResponse(); - - try { - authresponse.setTokenSaml(super.signAndMarshall(response)); - authresponse.setSamlId(response.getID()); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - return authresponse; - } - - /** - * Generate stork authentication response. - * - * @param request the request - * @param responseAuthReq the response authentication request - * @param ipAddress the IP address - * @param isHashing the is hashing - * - * @return the sTORK authentication response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnResponse generateSTORKAuthnResponseAfterQuery( - final STORKAuthnRequest request, - final STORKAuthnResponse responseAuthReq, final String ipAddress, - final boolean isHashing, List res) throws STORKSAMLEngineException { - LOG.info("generateSTORKAuthnResponse"); - - // Validate parameters - validateParamResponse(request, responseAuthReq); - - // Mandatory SAML - LOG.debug("Generate StatusCode"); - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(StatusCode.SUCCESS_URI); - - LOG.debug("Generate Status"); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - LOG.debug("Generate StatusMessage"); - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(StatusCode.SUCCESS_URI); - - status.setStatusMessage(statusMessage); - - LOG.debug("Generate Response"); - - // RESPONSE - final Response response = genAuthnRespBase(status, request - .getAssertionConsumerServiceURL(), request.getSamlId()); - - DateTime notOnOrAfter = new DateTime(); - - notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() - .getTimeNotOnOrAfter()); - - final Assertion assertion = this.generateAssertion(ipAddress, request - .getAssertionConsumerServiceURL(), request.getSamlId(), request - .getIssuer(), notOnOrAfter); - - final AttributeStatement attrStatement = this - .generateAttributeStatement(responseAuthReq - .getPersonalAttributeList(), isHashing); - - assertion.getAttributeStatements().add(attrStatement); - - // Add assertions - response.getAssertions().add(assertion); - // Check for response queries - if (res != null && res.size() > 0) - { - //Iterate through them - for (int i = 0; i < res.size(); i++) - { - //If response contains multiple assertions iterate through them as well - if (res.get(i).getAssertions().size() > 1) - { - for (int j = 0; j < res.get(i).getAssertions().size(); j++) - { - Assertion tempAssertion = res.get(i).getAssertions().get(j); - tempAssertion.setParent(response); - response.getAssertions().add(tempAssertion); - } - } else { - Assertion tempAssertion = res.get(i).getAssertion(); - tempAssertion.setParent(response); - response.getAssertions().add(tempAssertion); - } - } - } - - final STORKAuthnResponse authresponse = new STORKAuthnResponse(); - - try { - authresponse.setTokenSaml(super.signAndMarshall(response)); - authresponse.setSamlId(response.getID()); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - return authresponse; - } - - /** - * Generate stork authentication response fail. - * - * @param request the request - * @param response the response - * @param ipAddress the IP address - * @param isHashing the is hashing - * - * @return the sTORK authentication response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnResponse generateSTORKAuthnResponseFail( - final STORKAuthnRequest request, final STORKAuthnResponse response, - final String ipAddress, final boolean isHashing) - throws STORKSAMLEngineException { - LOG.info("generateSTORKAuthnResponseFail"); - - validateParamResponseFail(request, response); - - // Mandatory - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(response.getStatusCode()); - - // Mandatory SAML - LOG.debug("Generate StatusCode."); - // Subordinate code it's optional in case not covered into next codes: - // - urn:oasis:names:tc:SAML:2.0:status:AuthnFailed - // - urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue - // - urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy - // - urn:oasis:names:tc:SAML:2.0:status:RequestDenied - // - http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported - - if (StringUtils.isNotBlank(response.getSubStatusCode())) { - final StatusCode newStatusCode = SAMLEngineUtils - .generateStatusCode(response.getSubStatusCode()); - statusCode.setStatusCode(newStatusCode); - } - - LOG.debug("Generate Status."); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - if (StringUtils.isNotBlank(response.getMessage())) { - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(response.getMessage()); - - status.setStatusMessage(statusMessage); - } - - LOG.debug("Generate Response."); - // RESPONSE - final Response responseFail = genAuthnRespBase(status, request - .getAssertionConsumerServiceURL(), request.getSamlId()); - - DateTime notOnOrAfter = new DateTime(); - - notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() - .getTimeNotOnOrAfter()); - - final Assertion assertion = this.generateAssertion(ipAddress, request - .getAssertionConsumerServiceURL(), request.getSamlId(), request - .getIssuer(), notOnOrAfter); - - responseFail.getAssertions().add(assertion); - - LOG.debug("Sign and Marshall ResponseFail."); - - final STORKAuthnResponse storkResponse = new STORKAuthnResponse(); - - try { - storkResponse.setTokenSaml(super.signAndMarshall(responseFail)); - storkResponse.setSamlId(responseFail.getID()); - } catch (SAMLEngineException e) { - LOG.error("SAMLEngineException.", e); - throw new STORKSAMLEngineException(e); - } - return storkResponse; - } - - /** - * Generate stork attribute query request. - * - * @param request the request that contain all parameters for generate an - * attribute query request. - * - * @return the STORK attribute query request that has been processed. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAttrQueryRequest generateSTORKAttrQueryRequest( - final STORKAttrQueryRequest request) throws STORKSAMLEngineException { - LOG.info("Generate STORKAttrQueryRequest."); - - // Validate Parameters mandatories - validateParamAttrQueryReq(request); - - //final AttributeQuery attrQueryRequestAux = SAMLEngineUtils - final CustomAttributeQuery attrQueryRequestAux = SAMLEngineUtils - .generateSAMLAttrQueryRequest(SAMLEngineUtils.generateNCName(), - SAMLVersion.VERSION_20, SAMLEngineUtils - .getCurrentTime()); - - // Set name spaces. - setNameSpaces(attrQueryRequestAux); - - - // Add parameter optional STORK - // Destination is mandatory if the destination is a C-PEPS - // The application must to know if the destination is a C-PEPS. - if (StringUtils.isNotBlank(request.getDestination())) { - attrQueryRequestAux.setDestination(request.getDestination()); - } - - // Add parameter optional STORK - // Consumer URL is needed if using HTTP-Post - if (StringUtils.isNotBlank(request.getAssertionConsumerServiceURL())) { - attrQueryRequestAux.setAssertionConsumerServiceURL(request.getAssertionConsumerServiceURL()); - } - - // Consent is optional. Set from SAMLEngine.xml - consent. - attrQueryRequestAux.setConsent(super.getSamlCoreProperties() - .getConsentAuthnRequest()); - - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - - //Set the subject - needed for attribute query validation - Subject subject = SAMLEngineUtils.generateSubject(); - SubjectConfirmationBuilder builder = new SubjectConfirmationBuilder(); - SubjectConfirmation subjectConfirmation = builder.buildObject(); - subjectConfirmation.setMethod("urn:oasis:names:tc:SAML:2.0:cm:bearer"); - subject.getSubjectConfirmations().add(subjectConfirmation); - attrQueryRequestAux.setSubject(subject); - - if(request.getIssuer()!=null){ - issuer.setValue(request.getIssuer()); - } else { - issuer.setValue(super.getSamlCoreProperties().getRequester()); - } - - // Optional STORK - final String formatEntity = super.getSamlCoreProperties() - .getFormatEntity(); - if (StringUtils.isNotBlank(formatEntity)) { - issuer.setFormat(formatEntity); - } - - attrQueryRequestAux.setIssuer(issuer); - - // Generate stork extensions. - final Extensions storkExtensions = this - .generateSTORKAttrExtensions(request); - // add the extensions to the SAMLAuthnRequest - attrQueryRequestAux.setExtensions(storkExtensions); - - // the result contains an authentication request token (byte[]), - // identifier of the token, and all parameters from the request. - final STORKAttrQueryRequest attrQueryRequest = processAttrExtensions(attrQueryRequestAux - .getExtensions()); - - try { - attrQueryRequest.setTokenSaml(super.signAndMarshall(attrQueryRequestAux)); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - - attrQueryRequest.setSamlId(attrQueryRequestAux.getID()); - attrQueryRequest.setDestination(attrQueryRequestAux.getDestination()); - attrQueryRequest.setAssertionConsumerServiceURL(attrQueryRequestAux.getAssertionConsumerServiceURL()); - attrQueryRequest.setIssuer(attrQueryRequestAux.getIssuer().getValue()); - - return attrQueryRequest; - } - - /** - * Generate stork attribute query response. - * - * @param request the request - * @param responseAttrQueryRes the response authentication request - * @param ipAddress the IP address - * @param isHashing the hashing of values - * - * @return the sTORK authentication response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAttrQueryResponse generateSTORKAttrQueryResponse( - final STORKAttrQueryRequest request, - final STORKAttrQueryResponse responseAttrQueryRes, final String ipAddress, - final String destinationUrl, final boolean isHashing) throws STORKSAMLEngineException { - LOG.info("generateSTORKAttrQueryResponse"); - - // Validate parameters - validateParamAttrQueryResponse(request, responseAttrQueryRes); - - // Mandatory SAML - LOG.debug("Generate StatusCode"); - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(StatusCode.SUCCESS_URI); - - LOG.debug("Generate Status"); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - LOG.debug("Generate StatusMessage"); - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(StatusCode.SUCCESS_URI); - - status.setStatusMessage(statusMessage); - - LOG.debug("Generate Response"); - - // RESPONSE - final Response response = genAuthnRespBase(status, destinationUrl, - request.getSamlId()); - - DateTime notOnOrAfter = new DateTime(); - - notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() - .getTimeNotOnOrAfter()); - - final Assertion assertion = this.generateAssertion(ipAddress, "" - ,request.getSamlId(), request.getIssuer(), notOnOrAfter); - - final AttributeStatement attrStatement = this - .generateAttributeStatement(responseAttrQueryRes - .getPersonalAttributeList(), isHashing); - - assertion.getAttributeStatements().add(attrStatement); - - // Add assertions - response.getAssertions().add(assertion); - - final STORKAttrQueryResponse attrQueryResponse = new STORKAttrQueryResponse(); - - try { - attrQueryResponse.setTokenSaml(super.signAndMarshall(response)); - attrQueryResponse.setSamlId(response.getID()); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - return attrQueryResponse; - } - - /** - * Generate stork attribute query response from multiple assertions - * - * @param request the request - * @param responseAttrQueryRes the response to the query request - * @param responses the responses to include in the response (aggregation) - * @param ipAddress the IP address - * @param isHashing the hashing of values - * - * @return the sTORK attribute query response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAttrQueryResponse generateSTORKAttrQueryResponseWithAssertions( - final STORKAttrQueryRequest request, final STORKAttrQueryResponse responseAttrQueryRes, - final List responses, final String ipAddress, - final String destinationUrl, final boolean isHashing) throws STORKSAMLEngineException { - LOG.info("generateSTORKAttrQueryResponse"); - - // Validate parameters - validateParamAttrQueryResponseFromAssertions(request, responseAttrQueryRes); - - // Mandatory SAML - LOG.debug("Generate StatusCode"); - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(StatusCode.SUCCESS_URI); - - LOG.debug("Generate Status"); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - LOG.debug("Generate StatusMessage"); - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(StatusCode.SUCCESS_URI); - - status.setStatusMessage(statusMessage); - - LOG.debug("Generate Response"); - - // RESPONSE - final Response response = genAuthnRespBase(status, destinationUrl, - request.getSamlId()); - - DateTime notOnOrAfter = new DateTime(); - - notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() - .getTimeNotOnOrAfter()); - - final Assertion assertion = this.generateAssertion(ipAddress, "" - ,request.getSamlId(), request.getIssuer(), notOnOrAfter); - - final AttributeStatement attrStatement = this - .generateAttributeStatement(responseAttrQueryRes - .getPersonalAttributeList(), isHashing); - - assertion.getAttributeStatements().add(attrStatement); - - // Add the assertions from the former Query responses - response.getAssertions().add(assertion); - if (responses != null && responses.size() > 0) - { - for (int i = 0; i < responses.size(); i++) - { - Assertion tempAssertion = responses.get(i).getAssertion(); - tempAssertion.setParent(response); - response.getAssertions().add(tempAssertion); - } - } - - final STORKAttrQueryResponse attrQueryResponse = new STORKAttrQueryResponse(); - - try { - attrQueryResponse.setTokenSaml(super.signAndMarshall(response)); - attrQueryResponse.setSamlId(response.getID()); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - return attrQueryResponse; - } - - /** - * Generate stork attribute query response fail. - * - * @param request the request - * @param response the response - * @param ipAddress the IP address - * @param isHashing the is hashing - * - * @return the STORK attribute query response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAttrQueryResponse generateSTORKAttrQueryResponseFail( - final STORKAttrQueryRequest request, final STORKAttrQueryResponse response, - final String ipAddress, final String destinationUrl, final boolean isHashing) - throws STORKSAMLEngineException { - LOG.info("generateSTORKAttrQueryResponseFail"); - - validateParamAttrQueryResponseFail(request, response); - - // Mandatory - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(response.getStatusCode()); - - // Mandatory SAML - LOG.debug("Generate StatusCode."); - // Subordinate code it's optional in case not covered into next codes: - // - urn:oasis:names:tc:SAML:2.0:status:AuthnFailed - // - urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue - // - urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy - // - urn:oasis:names:tc:SAML:2.0:status:RequestDenied - // - http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported - - if (StringUtils.isNotBlank(response.getSubStatusCode())) { - final StatusCode newStatusCode = SAMLEngineUtils - .generateStatusCode(response.getSubStatusCode()); - statusCode.setStatusCode(newStatusCode); - } - - LOG.debug("Generate Status."); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - if (StringUtils.isNotBlank(response.getMessage())) { - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(response.getMessage()); - - status.setStatusMessage(statusMessage); - } - - LOG.debug("Generate Response."); - // RESPONSE - final Response responseFail = genAuthnRespBase(status, destinationUrl, - request.getSamlId()); - - DateTime notOnOrAfter = new DateTime(); - - notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() - .getTimeNotOnOrAfter()); - - final Assertion assertion = this.generateAssertion(ipAddress, "", - request.getSamlId(), request - .getIssuer(), notOnOrAfter); - - responseFail.getAssertions().add(assertion); - - LOG.debug("Sign and Marshall ResponseFail."); - - final STORKAttrQueryResponse storkResponse = new STORKAttrQueryResponse(); - - try { - storkResponse.setTokenSaml(super.signAndMarshall(responseFail)); - storkResponse.setSamlId(responseFail.getID()); - } catch (SAMLEngineException e) { - LOG.error("SAMLEngineException.", e); - throw new STORKSAMLEngineException(e); - } - return storkResponse; - } - - /** - * Generate stork logout request. - * - * @param request the request that contain all parameters for generate an - * logout request. - * - * @return the STORK logout request that has been processed. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKLogoutRequest generateSTORKLogoutRequest( - final STORKLogoutRequest request) throws STORKSAMLEngineException { - LOG.info("Generate STORKLogoutRequest."); - - // Validate Parameters mandatories - validateParamLogoutReq(request); - - final LogoutRequest logoutRequestAux = SAMLEngineUtils - .generateSAMLLogoutRequest(SAMLEngineUtils.generateNCName(), - SAMLVersion.VERSION_20, SAMLEngineUtils - .getCurrentTime()); - - // Set name spaces. - setNameSpaces(logoutRequestAux); - - - // Add parameter optional STORK - // Destination is mandatory if the destination is a C-PEPS - // The application must to know if the destination is a C-PEPS. - if (StringUtils.isNotBlank(request.getDestination())) { - logoutRequestAux.setDestination(request.getDestination()); - } - - // Consent is optional. Set from SAMLEngine.xml - consent. - logoutRequestAux.setConsent(super.getSamlCoreProperties() - .getConsentAuthnRequest()); - - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - - - if(request.getIssuer()!=null){ - issuer.setValue(request.getIssuer()); - } else { - issuer.setValue(super.getSamlCoreProperties().getRequester()); - } - - // Optional STORK - final String formatEntity = super.getSamlCoreProperties() - .getFormatEntity(); - if (StringUtils.isNotBlank(formatEntity)) { - issuer.setFormat(formatEntity); - } - - logoutRequestAux.setIssuer(issuer); - - // Set the name ID - final NameID newNameID = SAMLEngineUtils.generateNameID(); - newNameID.setValue(request.getSpProvidedId()); - logoutRequestAux.setNameID(newNameID); - - - // the result contains an authentication request token (byte[]), - // identifier of the token, and all parameters from the request. - final STORKLogoutRequest logoutRequest = new STORKLogoutRequest(); - - try { - logoutRequest.setTokenSaml(super.signAndMarshall(logoutRequestAux)); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - - logoutRequest.setSamlId(logoutRequestAux.getID()); - logoutRequest.setDestination(logoutRequestAux.getDestination()); - logoutRequest.setIssuer(logoutRequestAux.getIssuer().getValue()); - logoutRequest.setSpProvidedId(logoutRequestAux.getNameID().getValue()); - - return logoutRequest; - } - - - /** - * Generate stork logout response. - * @param request the request thats being responded to - * @param response the tesponse that contain all parameters for generate an - * logout request. - * - * @return the STORK logout response that has been processed. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKLogoutResponse generateSTORKLogoutResponse( - final STORKLogoutRequest request, - final STORKLogoutResponse response) throws STORKSAMLEngineException { - LOG.info("Generate STORKLogoutResponse."); - - // Validate Parameters mandatories - validateParamLogoutRes(request, response); - - // Mandatory SAML - LOG.debug("Generate StatusCode"); - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(StatusCode.SUCCESS_URI); - - LOG.debug("Generate Status"); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - LOG.debug("Generate StatusMessage"); - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(StatusCode.SUCCESS_URI); - - status.setStatusMessage(statusMessage); - - final LogoutResponse logoutResponseAux= SAMLEngineUtils - .generateSAMLLogoutResponse(SAMLEngineUtils.generateNCName(), - SAMLVersion.VERSION_20, SAMLEngineUtils - .getCurrentTime(), status, request.getSamlId()); - - // Set name spaces. - setNameSpaces(logoutResponseAux); - - - // Add parameter optional STORK - // Destination is mandatory if the destination is a C-PEPS - // The application must to know if the destination is a C-PEPS. - if (StringUtils.isNotBlank(response.getDestination())) { - logoutResponseAux.setDestination(response.getDestination()); - } - - // Consent is optional. Set from SAMLEngine.xml - consent. - logoutResponseAux.setConsent(super.getSamlCoreProperties() - .getConsentAuthnRequest()); - - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - - - if(response.getIssuer()!=null){ - issuer.setValue(response.getIssuer()); - } else { - issuer.setValue(super.getSamlCoreProperties().getRequester()); - } - - // Optional STORK - final String formatEntity = super.getSamlCoreProperties() - .getFormatEntity(); - if (StringUtils.isNotBlank(formatEntity)) { - issuer.setFormat(formatEntity); - } - - logoutResponseAux.setIssuer(issuer); - - - // the result contains an authentication request token (byte[]), - // identifier of the token, and all parameters from the request. - final STORKLogoutResponse logoutResponse = new STORKLogoutResponse(); - - try { - logoutResponse.setTokenSaml(super.signAndMarshall(logoutResponseAux)); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - - logoutResponse.setSamlId(logoutResponseAux.getID()); - logoutResponse.setDestination(logoutResponseAux.getDestination()); - logoutResponse.setIssuer(logoutResponseAux.getIssuer().getValue()); - logoutResponse.setStatusCode(logoutResponseAux.getStatus().getStatusCode().toString()); - logoutResponse.setStatusMessage(logoutResponseAux.getStatus().getStatusMessage().toString()); - - return logoutResponse; - } - - /** - * Generate failed stork logout response. - * - * @param response the response that contain all parameters for generate an - * logout request. - * - * @return the STORK logout response that has been processed. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKLogoutResponse generateSTORKLogoutResponseFail( - final STORKLogoutRequest request, - final STORKLogoutResponse response ) throws STORKSAMLEngineException { - LOG.info("Generate STORKLogoutResponse."); - - // Validate Parameters mandatories - validateParamLogoutResFail(request, response); - - // Mandatory - final StatusCode statusCode = SAMLEngineUtils - .generateStatusCode(response.getStatusCode()); - - // Mandatory SAML - LOG.debug("Generate StatusCode."); - // Subordinate code it's optional in case not covered into next codes: - // - urn:oasis:names:tc:SAML:2.0:status:AuthnFailed - // - urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue - // - urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy - // - urn:oasis:names:tc:SAML:2.0:status:RequestDenied - // - http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported - - if (StringUtils.isNotBlank(response.getSubStatusCode())) { - final StatusCode newStatusCode = SAMLEngineUtils - .generateStatusCode(response.getSubStatusCode()); - statusCode.setStatusCode(newStatusCode); - } - - LOG.debug("Generate Status."); - final Status status = SAMLEngineUtils.generateStatus(statusCode); - - if (StringUtils.isNotBlank(response.getStatusMessage())) { - final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils - .generateStatusMessage(response.getStatusMessage()); - - status.setStatusMessage(statusMessage); - } - - final LogoutResponse logoutResponseAux= SAMLEngineUtils - .generateSAMLLogoutResponse(SAMLEngineUtils.generateNCName(), - SAMLVersion.VERSION_20, SAMLEngineUtils - .getCurrentTime(), status, request.getSamlId()); - - // Set name spaces. - setNameSpaces(logoutResponseAux); - - - // Add parameter optional STORK - // Destination is mandatory if the destination is a C-PEPS - // The application must to know if the destination is a C-PEPS. - if (StringUtils.isNotBlank(response.getDestination())) { - logoutResponseAux.setDestination(response.getDestination()); - } - - // Consent is optional. Set from SAMLEngine.xml - consent. - logoutResponseAux.setConsent(super.getSamlCoreProperties() - .getConsentAuthnRequest()); - - final Issuer issuer = SAMLEngineUtils.generateIssuer(); - - - if(response.getIssuer()!=null){ - issuer.setValue(response.getIssuer()); - } else { - issuer.setValue(super.getSamlCoreProperties().getRequester()); - } - - // Optional STORK - final String formatEntity = super.getSamlCoreProperties() - .getFormatEntity(); - if (StringUtils.isNotBlank(formatEntity)) { - issuer.setFormat(formatEntity); - } - - logoutResponseAux.setIssuer(issuer); - - - // the result contains an authentication request token (byte[]), - // identifier of the token, and all parameters from the request. - final STORKLogoutResponse logoutResponse = new STORKLogoutResponse(); - - try { - logoutResponse.setTokenSaml(super.signAndMarshall(logoutResponseAux)); - } catch (SAMLEngineException e) { - LOG.error("Sign and Marshall.", e); - throw new STORKSAMLEngineException(e); - } - - logoutResponse.setSamlId(logoutResponseAux.getID()); - logoutResponse.setDestination(logoutResponseAux.getDestination()); - logoutResponse.setIssuer(logoutResponseAux.getIssuer().getValue()); - logoutResponse.setStatusCode(logoutResponseAux.getStatus().getStatusCode().toString()); - logoutResponse.setStatusMessage(logoutResponseAux.getStatus().getStatusMessage().toString()); - - return logoutResponse; - } - - /** - * Generate stork authentication statement for the authentication statement. - * - * @param ipAddress the IP address - * - * @return the authentication statement - */ - private AuthnStatement generateStorkAuthStatement(final String ipAddress) { - LOG.debug("Generate stork authenticate statement."); - final SubjectLocality subjectLocality = SAMLEngineUtils - .generateSubjectLocality(ipAddress); - - final AuthnContext authnContext = (AuthnContext) SAMLEngineUtils - .createSamlObject(AuthnContext.DEFAULT_ELEMENT_NAME); - - final AuthnContextDecl authnContextDecl = (AuthnContextDecl) SAMLEngineUtils - .createSamlObject(AuthnContextDecl.DEFAULT_ELEMENT_NAME); - - authnContext.setAuthnContextDecl(authnContextDecl); - - final AuthnStatement authnStatement = SAMLEngineUtils - .generateAthnStatement(new DateTime(), authnContext); - - // Optional STORK - authnStatement.setSessionIndex(null); - authnStatement.setSubjectLocality(subjectLocality); - - return authnStatement; - } - - /** - * Generate stork extensions. - * - * @param request the request - * - * @return the extensions - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Extensions generateSTORKExtensions(final STORKAuthnRequest request) - throws STORKSAMLEngineException { - LOG.debug("Generate STORKExtensions"); - - final Extensions extensions = SAMLEngineUtils.generateExtension(); - - LOG.debug("Generate QAAAttribute"); - final QAAAttribute qaaAttribute = SAMLEngineUtils - .generateQAAAttribute(request.getQaa()); - extensions.getUnknownXMLObjects().add(qaaAttribute); - - - if (StringUtils.isNotEmpty(request - .getSpSector())) { - // Add information about service provider. - LOG.debug("Generate SPSector"); - final SPSector sector = SAMLEngineUtils.generateSPSector(request - .getSpSector()); - extensions.getUnknownXMLObjects().add(sector); - } - - //Delete from specification. Kept for compatibility with Provider Name value - LOG.debug("Generate SPInstitution"); - final SPInstitution institution = SAMLEngineUtils - .generateSPInstitution(request.getProviderName()); - extensions.getUnknownXMLObjects().add(institution); - - - if (StringUtils.isNotEmpty(request.getSpApplication())) { - LOG.debug("Generate SPApplication"); - final SPApplication application = SAMLEngineUtils - .generateSPApplication(request.getSpApplication()); - extensions.getUnknownXMLObjects().add(application); - } - - if (StringUtils.isNotEmpty(request.getSpCountry())) { - LOG.debug("Generate SPCountry"); - final SPCountry country = SAMLEngineUtils.generateSPCountry(request - .getSpCountry()); - extensions.getUnknownXMLObjects().add(country); - } - - //eIDSectorShare: optional; default value: false. - String valueSectorShare = super.getSamlCoreProperties() - .iseIDSectorShare(); - - if (StringUtils.isNotEmpty(valueSectorShare)) { - // Add information about the use of the SAML message. - LOG.debug("Generate EIDSectorShare"); - final EIDSectorShare eIdSectorShare = (EIDSectorShare) SAMLEngineUtils - .createSamlObject(EIDSectorShare.DEF_ELEMENT_NAME); - - eIdSectorShare.setEIDSectorShare(String.valueOf(Boolean.valueOf(valueSectorShare))); - - extensions.getUnknownXMLObjects().add(eIdSectorShare); - } - - String valueCrossSectorShare = super.getSamlCoreProperties() - .iseIDCrossSectorShare(); - - if (StringUtils.isNotEmpty(valueCrossSectorShare)) { - LOG.debug("Generate EIDCrossSectorShare"); - final EIDCrossSectorShare eIdCrossSecShare = (EIDCrossSectorShare) SAMLEngineUtils - .createSamlObject(EIDCrossSectorShare.DEF_ELEMENT_NAME); - eIdCrossSecShare.setEIDCrossSectorShare(String.valueOf(Boolean.valueOf(valueCrossSectorShare))); - extensions.getUnknownXMLObjects().add(eIdCrossSecShare); - } - - - String valueCrossBorderShare = super.getSamlCoreProperties() - .iseIDCrossBorderShare(); - - if (StringUtils.isNotEmpty(valueCrossBorderShare)) { - LOG.debug("Generate EIDCrossBorderShare"); - final EIDCrossBorderShare eIdCrossBordShare = (EIDCrossBorderShare) SAMLEngineUtils - .createSamlObject(EIDCrossBorderShare.DEF_ELEMENT_NAME); - eIdCrossBordShare.setEIDCrossBorderShare(String.valueOf(Boolean.valueOf(valueCrossBorderShare))); - extensions.getUnknownXMLObjects().add(eIdCrossBordShare); - } - - - // Add information about requested attributes. - LOG.debug("Generate RequestedAttributes."); - final RequestedAttributes reqAttributes = (RequestedAttributes) SAMLEngineUtils - .createSamlObject(RequestedAttributes.DEF_ELEMENT_NAME); - - LOG.debug("SAML Engine configuration properties load."); - final Iterator iterator = request - .getPersonalAttributeList().iterator(); - - while (iterator.hasNext()) { - - final PersonalAttribute attribute = iterator.next(); - - if (attribute == null || StringUtils.isBlank(attribute.getName())) { - LOG.error(ATTRIBUTE_EMPTY_LITERAL); - throw new STORKSAMLEngineException(ATTRIBUTE_EMPTY_LITERAL); - } - - // Verified if exits the attribute name. - final String attributeName = super.getSamlCoreProperties() - .getProperty(attribute.getName()); - - if (StringUtils.isBlank(attributeName)) { - LOG.debug("Attribute name: {} was not found.", attribute - .getName()); - throw new STORKSAMLEngineException("Attribute name: " - + attribute.getName() + " was not found."); - } - - // Friendly name it's an optional attribute. - String friendlyName = null; - - if (super.getSamlCoreProperties().isFriendlyName()) { - friendlyName = attribute.getName(); - } - - - String isRequired = null; - if (super.getSamlCoreProperties().isRequired()) { - isRequired = String.valueOf(attribute.isRequired()); - } - - - LOG.debug("Generate requested attribute: " + attributeName); - final RequestedAttribute requestedAttr = SAMLEngineUtils - .generateReqAuthnAttributeSimple(attributeName, - friendlyName, isRequired, attribute - .getValue()); - - // Add requested attribute. - reqAttributes.getAttributes().add(requestedAttr); - } - - // Add requested attributes. - extensions.getUnknownXMLObjects().add(reqAttributes); - - CitizenCountryCode citizenCountryCode = null; - if (request.getCitizenCountryCode() != null && StringUtils.isNotBlank(request.getCitizenCountryCode())){ - LOG.debug("Generate CitizenCountryCode"); - citizenCountryCode = (CitizenCountryCode) SAMLEngineUtils - .createSamlObject(CitizenCountryCode.DEF_ELEMENT_NAME); - - citizenCountryCode.setCitizenCountryCode(request - .getCitizenCountryCode().toUpperCase()); - } - - SPID spid = null; - if(request.getSPID()!=null && StringUtils.isNotBlank(request.getSPID())) { - LOG.debug("Generate SPID"); - spid = (SPID) SAMLEngineUtils - .createSamlObject(SPID.DEF_ELEMENT_NAME); - - spid.setSPID(request.getSPID().toUpperCase()); - } - - AuthenticationAttributes authenticationAttr = (AuthenticationAttributes) SAMLEngineUtils - .createSamlObject(AuthenticationAttributes.DEF_ELEMENT_NAME); - - final VIDPAuthenticationAttributes vIDPauthenticationAttr = (VIDPAuthenticationAttributes) SAMLEngineUtils - .createSamlObject(VIDPAuthenticationAttributes.DEF_ELEMENT_NAME); - - final SPInformation spInformation = (SPInformation) SAMLEngineUtils - .createSamlObject(SPInformation.DEF_ELEMENT_NAME); - - if(citizenCountryCode!=null){ - vIDPauthenticationAttr.setCitizenCountryCode(citizenCountryCode); - } - - if(spid!=null){ - spInformation.setSPID(spid); - } - - vIDPauthenticationAttr.setSPInformation(spInformation); - - authenticationAttr - .setVIDPAuthenticationAttributes(vIDPauthenticationAttr); - extensions.getUnknownXMLObjects().add(authenticationAttr); - - - return extensions; - - } - - /** - * Generate stork extensions. - * - * @param request the attribute query request - * - * @return the extensions - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Extensions generateSTORKAttrExtensions(final STORKAttrQueryRequest request) - throws STORKSAMLEngineException { - LOG.debug("Generate STORKExtensions"); - - final Extensions extensions = SAMLEngineUtils.generateExtension(); - - LOG.debug("Generate QAAAttribute"); - final QAAAttribute qaaAttribute = SAMLEngineUtils - .generateQAAAttribute(request.getQaa()); - extensions.getUnknownXMLObjects().add(qaaAttribute); - - - if (StringUtils.isNotEmpty(request - .getSpSector())) { - // Add information about service provider. - LOG.debug("Generate SPSector"); - final SPSector sector = SAMLEngineUtils.generateSPSector(request - .getSpSector()); - extensions.getUnknownXMLObjects().add(sector); - } - - - if (StringUtils.isNotEmpty(request.getSpApplication())) { - LOG.debug("Generate SPApplication"); - final SPApplication application = SAMLEngineUtils - .generateSPApplication(request.getSpApplication()); - extensions.getUnknownXMLObjects().add(application); - } - - if (StringUtils.isNotEmpty(request.getSpCountry())) { - LOG.debug("Generate SPCountry"); - final SPCountry country = SAMLEngineUtils.generateSPCountry(request - .getSpCountry()); - extensions.getUnknownXMLObjects().add(country); - } - - final EIDSectorShare eIdSectorShare = (EIDSectorShare) SAMLEngineUtils - .createSamlObject(EIDSectorShare.DEF_ELEMENT_NAME); - - eIdSectorShare.setEIDSectorShare(String.valueOf(request.isEIDSectorShare())); - - extensions.getUnknownXMLObjects().add(eIdSectorShare); - - final EIDCrossSectorShare eIdCrossSecShare = (EIDCrossSectorShare) SAMLEngineUtils - .createSamlObject(EIDCrossSectorShare.DEF_ELEMENT_NAME); - eIdCrossSecShare.setEIDCrossSectorShare(String.valueOf(request.isEIDCrossSectorShare())); - extensions.getUnknownXMLObjects().add(eIdCrossSecShare); - - final EIDCrossBorderShare eIdCrossBordShare = (EIDCrossBorderShare) SAMLEngineUtils - .createSamlObject(EIDCrossBorderShare.DEF_ELEMENT_NAME); - eIdCrossBordShare.setEIDCrossBorderShare(String.valueOf(request.isEIDCrossBorderShare())); - extensions.getUnknownXMLObjects().add(eIdCrossBordShare); - - - // Add information about requested attributes. - LOG.debug("Generate RequestedAttributes."); - final RequestedAttributes reqAttributes = (RequestedAttributes) SAMLEngineUtils - .createSamlObject(RequestedAttributes.DEF_ELEMENT_NAME); - - LOG.debug("SAML Engine configuration properties load."); - final Iterator iterator = request - .getPersonalAttributeList().iterator(); - - while (iterator.hasNext()) { - - final PersonalAttribute attribute = iterator.next(); - - if (attribute == null || StringUtils.isBlank(attribute.getName())) { - LOG.error(ATTRIBUTE_EMPTY_LITERAL); - throw new STORKSAMLEngineException(ATTRIBUTE_EMPTY_LITERAL); - } - - // Verified if exits the attribute name. - final String attributeName = super.getSamlCoreProperties() - .getProperty(attribute.getName()); - - if (StringUtils.isBlank(attributeName)) { - LOG.debug("Attribute name: {} was not found.", attribute - .getName()); - throw new STORKSAMLEngineException("Attribute name: " - + attribute.getName() + " was not found."); - } - - // Friendly name it's an optional attribute. - String friendlyName = null; - - if (super.getSamlCoreProperties().isFriendlyName()) { - friendlyName = attribute.getName(); - } - - - String isRequired = null; - if (super.getSamlCoreProperties().isRequired()) { - isRequired = String.valueOf(attribute.isRequired()); - } - - - LOG.debug("Generate requested attribute: " + attributeName); - final RequestedAttribute requestedAttr = SAMLEngineUtils - .generateReqAuthnAttributeSimple(attributeName, - friendlyName, isRequired, attribute - .getValue()); - - // Add requested attribute. - reqAttributes.getAttributes().add(requestedAttr); - } - - // Add requested attributes. - extensions.getUnknownXMLObjects().add(reqAttributes); - - CitizenCountryCode citizenCountryCode = null; - if (request.getCitizenCountryCode() != null && StringUtils.isNotBlank(request.getCitizenCountryCode())){ - LOG.debug("Generate CitizenCountryCode"); - citizenCountryCode = (CitizenCountryCode) SAMLEngineUtils - .createSamlObject(CitizenCountryCode.DEF_ELEMENT_NAME); - - citizenCountryCode.setCitizenCountryCode(request - .getCitizenCountryCode().toUpperCase()); - } - - SPID spid = null; - if(request.getSPID()!=null && StringUtils.isNotBlank(request.getSPID())) { - LOG.debug("Generate SPID"); - spid = (SPID) SAMLEngineUtils - .createSamlObject(SPID.DEF_ELEMENT_NAME); - - spid.setSPID(request.getSPID().toUpperCase()); - } - - - return extensions; - - } - - /** - * Gets the alias from X.509 Certificate at keystore. - * - * @param keyInfo the key info - * @param storkOwnKeyStore - * @param storkOwnKeyStore - * - * @return the alias - */ - private String getAlias(final KeyInfo keyInfo, KeyStore storkOwnKeyStore) { - - LOG.debug("Recover alias information"); - - String alias = null; - try { - final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo - .getX509Datas().get(0).getX509Certificates().get(0); - - // Transform the KeyInfo to X509Certificate. - CertificateFactory certFact; - certFact = CertificateFactory.getInstance("X.509"); - - final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 - .decode(xmlCert.getValue())); - - final X509Certificate cert = (X509Certificate) certFact - .generateCertificate(bis); - - final String tokenSerialNumber = cert.getSerialNumber().toString(16); - final X509Principal tokenIssuerDN = new X509Principal(cert.getIssuerDN().getName()); - - - String aliasCert; - X509Certificate certificate; - boolean find = false; - - for (final Enumeration e = storkOwnKeyStore.aliases(); e - .hasMoreElements() - && !find; ) { - aliasCert = e.nextElement(); - certificate = (X509Certificate) storkOwnKeyStore - .getCertificate(aliasCert); - - final String serialNum = certificate.getSerialNumber() - .toString(16); - - X509Principal issuerDN = new X509Principal(certificate - .getIssuerDN().getName()); - - if(serialNum.equalsIgnoreCase(tokenSerialNumber) - && X509PrincipalUtil.equals2(issuerDN, tokenIssuerDN)){ - alias = aliasCert; - find = true; - } - - } - - } catch (KeyStoreException e) { - LOG.error("Procces getAlias from certificate associated into the signing keystore..", e); - } catch (CertificateException e) { - LOG.error("Procces getAlias from certificate associated into the signing keystore..", e); - } catch (RuntimeException e) { - LOG.error("Procces getAlias from certificate associated into the signing keystore..", e); - } - return alias; - } - - /** - * Gets the country from X.509 Certificate. - * - * @param keyInfo the key info - * - * @return the country - */ - private String getCountry(final KeyInfo keyInfo) { - LOG.debug("Recover country information."); - - String result = ""; - try { - final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo - .getX509Datas().get(0).getX509Certificates().get(0); - - // Transform the KeyInfo to X509Certificate. - CertificateFactory certFact; - certFact = CertificateFactory.getInstance("X.509"); - - final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 - .decode(xmlCert.getValue())); - - final X509Certificate cert = (X509Certificate) certFact - .generateCertificate(bis); - - String distName = cert.getSubjectDN().toString(); - - distName = StringUtils.deleteWhitespace(StringUtils - .upperCase(distName)); - - final String countryCode = "C="; - final int init = distName.indexOf(countryCode); - - if (init > StringUtils.INDEX_NOT_FOUND) { // Exist country code. - int end = distName.indexOf(',', init); - - if (end <= StringUtils.INDEX_NOT_FOUND) { - end = distName.length(); - } - - if (init < end && end > StringUtils.INDEX_NOT_FOUND) { - result = distName.substring(init + countryCode.length(), - end); - //It must be a two characters value - if(result.length()>2){ - result = result.substring(0, 2); - } - } - } - - } catch (CertificateException e) { - LOG.error("Procces getCountry from certificate."); - } - return result.trim(); - } - - /** - * Process all elements XMLObjects from the extensions. - * - * @param extensions the extensions from the authentication request. - * - * @return the STORK authentication request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private STORKAuthnRequest processExtensions(final Extensions extensions) - throws STORKSAMLEngineException { - LOG.debug("Procces the extensions."); - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - final QAAAttribute qaa = (QAAAttribute) extensions - .getUnknownXMLObjects(QAAAttribute.DEF_ELEMENT_NAME).get(0); - request.setQaa(Integer.parseInt(qaa.getQaaLevel())); - - List optionalElements = extensions.getUnknownXMLObjects( - SPSector.DEF_ELEMENT_NAME); - - if (!optionalElements.isEmpty()) { - final SPSector sector = (SPSector) extensions.getUnknownXMLObjects( - SPSector.DEF_ELEMENT_NAME).get(0); - request.setSpSector(sector.getSPSector()); - } - - optionalElements = extensions.getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME); - - if (!optionalElements.isEmpty()) { - final SPApplication application = (SPApplication) extensions - .getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME).get(0); - request.setSpApplication(application.getSPApplication()); - } - - optionalElements = extensions.getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME); - - if (!optionalElements.isEmpty()) { - final SPCountry application = (SPCountry) extensions - .getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME).get(0); - request.setSpCountry(application.getSPCountry()); - } - - - List listCrossBorderShare = extensions - .getUnknownXMLObjects(EIDCrossBorderShare.DEF_ELEMENT_NAME); - - if (!listCrossBorderShare .isEmpty()) { - final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) listCrossBorderShare.get(0); - request.setEIDCrossBorderShare(Boolean.parseBoolean(crossBorderShare - .getEIDCrossBorderShare())); - } - - - List listCrosSectorShare = extensions - .getUnknownXMLObjects(EIDCrossSectorShare.DEF_ELEMENT_NAME); - - if (!listCrosSectorShare.isEmpty()) { - final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) listCrosSectorShare.get(0); - request.setEIDCrossSectorShare(Boolean.parseBoolean(crossSectorShare - .getEIDCrossSectorShare())); - } - - List listSectorShareExtension = extensions - .getUnknownXMLObjects(EIDSectorShare.DEF_ELEMENT_NAME); - if (!listSectorShareExtension.isEmpty()) { - final EIDSectorShare sectorShare = (EIDSectorShare) listSectorShareExtension.get(0); - request.setEIDSectorShare(Boolean.parseBoolean(sectorShare.getEIDSectorShare())); - } - - - - List authAttrs = extensions - .getUnknownXMLObjects(AuthenticationAttributes.DEF_ELEMENT_NAME); - - if (authAttrs != null && !authAttrs.isEmpty()) { - - final AuthenticationAttributes authnAttr = (AuthenticationAttributes) authAttrs - .get(0); - - VIDPAuthenticationAttributes vidpAuthnAttr = null; - if (authnAttr != null && !authAttrs.isEmpty()){ - vidpAuthnAttr = authnAttr.getVIDPAuthenticationAttributes(); - } - - CitizenCountryCode citizenCountryCodeElement = null; - SPInformation spInformation = null; - if (vidpAuthnAttr != null){ - citizenCountryCodeElement = vidpAuthnAttr.getCitizenCountryCode(); - spInformation = vidpAuthnAttr.getSPInformation(); - } - - String citizenCountryCode = null; - if(citizenCountryCodeElement!=null){ - citizenCountryCode = citizenCountryCodeElement.getCitizenCountryCode(); - } - - if(citizenCountryCode!= null && StringUtils.isNotBlank(citizenCountryCode)){ - request.setCitizenCountryCode(citizenCountryCode); - } - - SPID spidElement = null; - if (spInformation != null){ - spidElement = spInformation.getSPID(); - } - - String spid = null; - if(spidElement!=null){ - spid = spidElement.getSPID(); - } - - if (spid != null && StringUtils.isNotBlank(spid)) { - request.setSPID(spid); - } - } - - if (extensions - .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) == null) { - LOG.error("Extensions not contains any requested attribute."); - throw new STORKSAMLEngineException( - "Extensions not contains any requested attribute."); - } - - final RequestedAttributes requestedAttr = (RequestedAttributes) extensions - .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) - .get(0); - - final List reqAttrs = requestedAttr.getAttributes(); - - final IPersonalAttributeList personalAttrList = new PersonalAttributeList(); - - String attributeName; - for (int nextAttribute = 0; nextAttribute < reqAttrs.size(); nextAttribute++) { - final RequestedAttribute attribute = reqAttrs.get(nextAttribute); - final PersonalAttribute personalAttribute = new PersonalAttribute(); - personalAttribute.setIsRequired(Boolean.valueOf(attribute.isRequired())); - personalAttribute.setFriendlyName(attribute.getFriendlyName()); - attributeName = attribute.getName(); - - // recover the last name from the string. - personalAttribute.setName(attributeName.substring(attributeName - .lastIndexOf('/') + 1)); - - final ArrayList valores = new ArrayList(); - final List values = attribute.getOrderedChildren(); - - for (int nextSimpleValue = 0; nextSimpleValue < values.size(); nextSimpleValue++) { - - // Process attributes simples. An AuthenticationRequest only - // must contains simple values. - - final XMLObject xmlObject = values.get(nextSimpleValue); - - if(xmlObject instanceof XSStringImpl){ - - final XSStringImpl xmlString = (XSStringImpl) values - .get(nextSimpleValue); - valores.add(xmlString.getValue()); - - }else{ - - if (attributeName.equals("http://www.stork.gov.eu/1.0/signedDoc")) { - - final XSAnyImpl xmlString = (XSAnyImpl) values - .get(nextSimpleValue); - - TransformerFactory transFactory = TransformerFactory.newInstance(); - Transformer transformer = null; - try { - transformer = transFactory.newTransformer(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - } catch (TransformerConfigurationException e) { - LOG.error("Error transformer configuration exception", e); - } - StringWriter buffer = new StringWriter(); - try { - if (xmlString != null && xmlString.getUnknownXMLObjects() != null && xmlString.getUnknownXMLObjects().size() > 0 ){ - transformer.transform(new DOMSource(xmlString.getUnknownXMLObjects().get(0).getDOM()), - new StreamResult(buffer)); - } - } catch (TransformerException e) { - LOG.error("Error transformer exception", e); - } - String str = buffer.toString(); - - valores.add(str); - - }else{ - - final XSAnyImpl xmlString = (XSAnyImpl) values - .get(nextSimpleValue); - valores.add(xmlString.getTextContent()); - } - - - - } - } - personalAttribute.setValue(valores); - personalAttrList.add(personalAttribute); - } - - request.setPersonalAttributeList(personalAttrList); - - return request; - } - - - /** - * Process all elements XMLObjects from the extensions. - * - * @param extensions the extensions from the authentication request. - * - * @return the STORK authentication request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private STORKAttrQueryRequest processAttrExtensions(final Extensions extensions) - throws STORKSAMLEngineException { - LOG.debug("Procces the atribute query extensions."); - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - final QAAAttribute qaa = (QAAAttribute) extensions - .getUnknownXMLObjects(QAAAttribute.DEF_ELEMENT_NAME).get(0); - request.setQaa(Integer.parseInt(qaa.getQaaLevel())); - - List optionalElements = extensions.getUnknownXMLObjects( - SPSector.DEF_ELEMENT_NAME); - - if (!optionalElements.isEmpty()) { - final SPSector sector = (SPSector) extensions.getUnknownXMLObjects( - SPSector.DEF_ELEMENT_NAME).get(0); - request.setSpSector(sector.getSPSector()); - } - - optionalElements = extensions.getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME); - - if (!optionalElements.isEmpty()) { - final SPApplication application = (SPApplication) extensions - .getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME).get(0); - request.setSpApplication(application.getSPApplication()); - } - - optionalElements = extensions.getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME); - - if (!optionalElements.isEmpty()) { - final SPCountry application = (SPCountry) extensions - .getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME).get(0); - request.setSpCountry(application.getSPCountry()); - } - - - List listCrossBorderShare = extensions - .getUnknownXMLObjects(EIDCrossBorderShare.DEF_ELEMENT_NAME); - - if (!listCrossBorderShare .isEmpty()) { - final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) listCrossBorderShare.get(0); - request.setEIDCrossBorderShare(Boolean.parseBoolean(crossBorderShare - .getEIDCrossBorderShare())); - } - - - List listCrosSectorShare = extensions - .getUnknownXMLObjects(EIDCrossSectorShare.DEF_ELEMENT_NAME); - - if (!listCrosSectorShare.isEmpty()) { - final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) listCrosSectorShare.get(0); - request.setEIDCrossSectorShare(Boolean.parseBoolean(crossSectorShare - .getEIDCrossSectorShare())); - } - - List listSectorShareExtension = extensions - .getUnknownXMLObjects(EIDSectorShare.DEF_ELEMENT_NAME); - if (!listSectorShareExtension.isEmpty()) { - final EIDSectorShare sectorShare = (EIDSectorShare) listSectorShareExtension.get(0); - request.setEIDSectorShare(Boolean.parseBoolean(sectorShare.getEIDSectorShare())); - } - - - - List authAttrs = extensions - .getUnknownXMLObjects(AuthenticationAttributes.DEF_ELEMENT_NAME); - - if (authAttrs != null && !authAttrs.isEmpty()) { - - final AuthenticationAttributes authnAttr = (AuthenticationAttributes) authAttrs - .get(0); - - VIDPAuthenticationAttributes vidpAuthnAttr = null; - if (authnAttr != null && !authAttrs.isEmpty()){ - vidpAuthnAttr = authnAttr.getVIDPAuthenticationAttributes(); - } - - CitizenCountryCode citizenCountryCodeElement = null; - SPInformation spInformation = null; - if (vidpAuthnAttr != null){ - citizenCountryCodeElement = vidpAuthnAttr.getCitizenCountryCode(); - spInformation = vidpAuthnAttr.getSPInformation(); - } - - String citizenCountryCode = null; - if(citizenCountryCodeElement!=null){ - citizenCountryCode = citizenCountryCodeElement.getCitizenCountryCode(); - } - - if(citizenCountryCode!= null && StringUtils.isNotBlank(citizenCountryCode)){ - request.setCitizenCountryCode(citizenCountryCode); - } - - SPID spidElement = null; - if (spInformation != null){ - spidElement = spInformation.getSPID(); - } - - String spid = null; - if(spidElement!=null){ - spid = spidElement.getSPID(); - } - - if (spid != null && StringUtils.isNotBlank(spid)) { - request.setSPID(spid); - } - } - - if (extensions - .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) == null) { - LOG.error("Extensions not contains any requested attribute."); - throw new STORKSAMLEngineException( - "Extensions not contains any requested attribute."); - } - - final RequestedAttributes requestedAttr = (RequestedAttributes) extensions - .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) - .get(0); - - final List reqAttrs = requestedAttr.getAttributes(); - - final IPersonalAttributeList personalAttrList = new PersonalAttributeList(); - - String attributeName; - for (int nextAttribute = 0; nextAttribute < reqAttrs.size(); nextAttribute++) { - final RequestedAttribute attribute = reqAttrs.get(nextAttribute); - final PersonalAttribute personalAttribute = new PersonalAttribute(); - personalAttribute.setIsRequired(Boolean.valueOf(attribute.isRequired())); - personalAttribute.setFriendlyName(attribute.getFriendlyName()); - attributeName = attribute.getName(); - - // recover the last name from the string. - personalAttribute.setName(attributeName.substring(attributeName - .lastIndexOf('/') + 1)); - - final ArrayList valores = new ArrayList(); - final List values = attribute.getOrderedChildren(); - - for (int nextSimpleValue = 0; nextSimpleValue < values.size(); nextSimpleValue++) { - - // Process attributes simples. An AuthenticationRequest only - // must contains simple values. - - final XMLObject xmlObject = values.get(nextSimpleValue); - - if(xmlObject instanceof XSStringImpl){ - - final XSStringImpl xmlString = (XSStringImpl) values - .get(nextSimpleValue); - valores.add(xmlString.getValue()); - - }else{ - - if (attributeName.equals("http://www.stork.gov.eu/1.0/signedDoc")) { - - final XSAnyImpl xmlString = (XSAnyImpl) values - .get(nextSimpleValue); - - TransformerFactory transFactory = TransformerFactory.newInstance(); - Transformer transformer = null; - try { - transformer = transFactory.newTransformer(); - transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - } catch (TransformerConfigurationException e) { - LOG.error("Error transformer configuration exception", e); - } - StringWriter buffer = new StringWriter(); - try { - if (xmlString != null && xmlString.getUnknownXMLObjects() != null && xmlString.getUnknownXMLObjects().size() > 0 ){ - transformer.transform(new DOMSource(xmlString.getUnknownXMLObjects().get(0).getDOM()), - new StreamResult(buffer)); - } - } catch (TransformerException e) { - LOG.error("Error transformer exception", e); - } - String str = buffer.toString(); - - valores.add(str); - - }else{ - - final XSAnyImpl xmlString = (XSAnyImpl) values - .get(nextSimpleValue); - valores.add(xmlString.getTextContent()); - } - - - - } - } - personalAttribute.setValue(valores); - personalAttrList.add(personalAttribute); - } - - request.setPersonalAttributeList(personalAttrList); - - return request; - } - - /** - * Sets the name spaces. - * - * @param tokenSaml the new name spaces - */ - private void setNameSpaces(final XMLObject tokenSaml) { - LOG.debug("Set namespaces."); - - final Namespace saml2 = new Namespace(SAMLConstants.SAML20_NS, - SAMLConstants.SAML20_PREFIX); - tokenSaml.addNamespace(saml2); - - final Namespace digSig = new Namespace( - "http://www.w3.org/2000/09/xmldsig#", "ds"); - tokenSaml.addNamespace(digSig); - - final Namespace storkp = new Namespace(SAMLCore.STORK10P_NS.getValue(), - SAMLCore.STORK10P_PREFIX.getValue()); - tokenSaml.addNamespace(storkp); - - final Namespace stork = new Namespace(SAMLCore.STORK10_NS.getValue(), - SAMLCore.STORK10_PREFIX.getValue()); - - tokenSaml.addNamespace(stork); - } - - /** - * Validate parameters from authentication request. - * - * @param request the request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamAuthnReq(final STORKAuthnRequest request) - throws STORKSAMLEngineException { - LOG.info("Validate parameters from authentication request."); - - // URL to which Authentication Response must be sent. - if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Assertion Consumer Service URL it's mandatory."); - } - - // the name of the original service provider requesting the - // authentication. - if (StringUtils.isBlank(request.getProviderName())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Service Provider it's mandatory."); - } - - // object that contain all attributes requesting. - if (request.getPersonalAttributeList() == null - || request.getPersonalAttributeList().isEmpty()) { - throw new STORKSAMLEngineException( - "attributeQueries is null or empty."); - } - - // Quality authentication assurance level. - if ((request.getQaa() < QAAAttribute.MIN_VALUE) - || (request.getQaa() > QAAAttribute.MAX_VALUE)) { - throw new STORKSAMLEngineException("Qaal: " + request.getQaa() - + ", is invalid."); - } - - } - - /** - * Validate parameters from attribute query request. - * - * @param request the request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamAttrQueryReq(final STORKAttrQueryRequest request) - throws STORKSAMLEngineException { - LOG.info("Validate parameters from attribute query request."); - - // URL to which AP Response must be sent. - if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Assertion Consumer Service URL it's mandatory."); - } - - // Destination of the request - not mandatory - /*if (StringUtils.isBlank(request.getDestination())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Destination is mandatory."); - }*/ - - // SP country is empty - if (StringUtils.isBlank(request.getSpCountry())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: SP country is mandatory."); - } - - // object that contain all attributes requesting. - if (request.getPersonalAttributeList() == null - || request.getPersonalAttributeList().isEmpty()) { - throw new STORKSAMLEngineException( - "attributeQueries is null or empty."); - } - - // Quality authentication assurance level. - if ((request.getQaa() < QAAAttribute.MIN_VALUE) - || (request.getQaa() > QAAAttribute.MAX_VALUE)) { - throw new STORKSAMLEngineException("Qaal: " + request.getQaa() - + ", is invalid."); - } - } - - /** - * Validate parameters from logout request. - * - * @param request the request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamLogoutReq(final STORKLogoutRequest request) - throws STORKSAMLEngineException { - LOG.info("Validate parameters from logout request."); - - // URL to which AP Response must be sent. - /*if (StringUtils.isBlank(request.get())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Assertion Consumer Service URL it's mandatory."); - }*/ - - // Destination of the request - if (StringUtils.isBlank(request.getDestination())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Destination is mandatory."); - } - - // SP Provided Id - if (StringUtils.isBlank(request.getSpProvidedId())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: SP provided Id is mandatory."); - } - } - - /** - * Validate parameters from logout response. - * - * @param response the response. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamLogoutRes(final STORKLogoutRequest request, - final STORKLogoutResponse response) throws STORKSAMLEngineException { - LOG.info("Validate parameters from logout request."); - - // Issuer is mandatory - if (StringUtils.isBlank(request.getIssuer())) { - throw new STORKSAMLEngineException( - "Issuer must be not empty or null."); - } - - // Destination of the request - if (StringUtils.isBlank(response.getDestination())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: Destination is mandatory."); - } - - // SP Provided Id - if (StringUtils.isBlank(request.getSpProvidedId())) { - throw new STORKSAMLEngineException( - "StorkSamlEngine: SP provided Id is mandatory."); - } - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - - /** - * Validate parameters from response. - * - * @param request the request - * @param responseAuthReq the response authentication request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamResponse(final STORKAuthnRequest request, - final STORKAuthnResponse responseAuthReq) - throws STORKSAMLEngineException { - LOG.info("Validate parameters response."); - if (StringUtils.isBlank(request.getIssuer())) { - throw new STORKSAMLEngineException( - "Issuer must be not empty or null."); - } - - if (responseAuthReq.getPersonalAttributeList() == null - || responseAuthReq.getPersonalAttributeList().isEmpty()) { - LOG.error("PersonalAttributeList is null or empty."); - throw new STORKSAMLEngineException( - "PersonalAttributeList is null or empty."); - } - - if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { - throw new STORKSAMLEngineException( - "assertionConsumerServiceURL is null or empty."); - } - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - /** - * Validate parameters from response. - * - * @param request the request - * @param responseAttrQueryReq the response authentication request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamAttrQueryResponse(final STORKAttrQueryRequest request, - final STORKAttrQueryResponse responseAttrQueryReq) - throws STORKSAMLEngineException { - LOG.info("Validate attribute querey parameters response."); - if (StringUtils.isBlank(request.getIssuer())) { - throw new STORKSAMLEngineException( - "Issuer must be not empty or null."); - } - - if (responseAttrQueryReq.getPersonalAttributeList() == null - || responseAttrQueryReq.getPersonalAttributeList().isEmpty()) { - LOG.error("PersonalAttributeList is null or empty."); - throw new STORKSAMLEngineException( - "PersonalAttributeList is null or empty."); - } - - /*if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { - throw new STORKSAMLEngineException( - "assertionConsumerServiceURL is null or empty."); - }*/ - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - /** - * Validate parameters from response. - * - * @param request the request - * @param responseAttrQueryReq the response authentication request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamAttrQueryResponseFromAssertions(final STORKAttrQueryRequest request, - final STORKAttrQueryResponse responseAttrQueryReq) - throws STORKSAMLEngineException { - LOG.info("Validate attribute querey parameters response."); - if (StringUtils.isBlank(request.getIssuer())) { - throw new STORKSAMLEngineException( - "Issuer must be not empty or null."); - } - - /*if (responseAttrQueryReq.getPersonalAttributeList() == null - || responseAttrQueryReq.getPersonalAttributeList().isEmpty()) { - LOG.error("PersonalAttributeList is null or empty."); - throw new STORKSAMLEngineException( - "PersonalAttributeList is null or empty."); - }*/ - - /*if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { - throw new STORKSAMLEngineException( - "assertionConsumerServiceURL is null or empty."); - }*/ - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - /** - * Validate parameter from response fail. - * - * @param request the request - * @param response the response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamResponseFail(final STORKAuthnRequest request, - final STORKAuthnResponse response) throws STORKSAMLEngineException { - LOG.info("Validate parameters response fail."); - if (StringUtils.isBlank(response.getStatusCode())) { - throw new STORKSAMLEngineException("Code error it's null or empty."); - } - - if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { - throw new STORKSAMLEngineException( - "assertionConsumerServiceURL is null or empty."); - } - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - /** - * Validate parameter from response fail. - * - * @param request the request - * @param response the response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamAttrQueryResponseFail(final STORKAttrQueryRequest request, - final STORKAttrQueryResponse response) throws STORKSAMLEngineException { - LOG.info("Validate parameters response fail."); - if (StringUtils.isBlank(response.getStatusCode())) { - throw new STORKSAMLEngineException("Code error it's null or empty."); - } - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - /** - * Validate parameter from response fail. - * - * @param request the request - * @param response the response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private void validateParamLogoutResFail(final STORKLogoutRequest request, - final STORKLogoutResponse response) throws STORKSAMLEngineException { - LOG.info("Validate parameters response fail."); - - if (StringUtils.isBlank(request.getIssuer())) { - throw new STORKSAMLEngineException( - "Issuer must be not empty or null."); - } - - if (StringUtils.isBlank(response.getStatusCode())) { - throw new STORKSAMLEngineException("Code error it's null or empty."); - } - - if (StringUtils.isBlank(request.getSamlId())) { - throw new STORKSAMLEngineException("request ID is null or empty."); - } - } - - /** - * Validate stork authentication request. - * - * @param tokenSaml the token SAML - * - * @return the sTORK authentication request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnRequest validateSTORKAuthnRequest(final byte[] tokenSaml) - throws STORKSAMLEngineException { - LOG.info("validateSTORKAuthnRequest"); - - final AuthnRequest samlRequest = (AuthnRequest) validateStorkSaml(tokenSaml); - - LOG.debug("Validate Extensions."); - final Validator validatorExt = new ExtensionsSchemaValidator(); - try { - validatorExt.validate(samlRequest.getExtensions()); - } catch (ValidationException e) { - LOG.error("ValidationException: validate Extensions.", e); - throw new STORKSAMLEngineException(e); - } - - LOG.debug("Generate STORKAuthnRequest."); - final STORKAuthnRequest authnRequest = processExtensions(samlRequest - .getExtensions()); - - authnRequest.setCountry(this.getCountry(samlRequest.getSignature() - .getKeyInfo())); - - authnRequest.setAlias(this.getAlias(samlRequest.getSignature() - .getKeyInfo(), super.getSigner().getTrustStore())); - - authnRequest.setSamlId(samlRequest.getID()); - authnRequest.setDestination(samlRequest.getDestination()); - authnRequest.setAssertionConsumerServiceURL(samlRequest - .getAssertionConsumerServiceURL()); - - authnRequest.setProviderName(samlRequest.getProviderName()); - authnRequest.setIssuer(samlRequest.getIssuer().getValue()); - - //Delete unknown elements from requested ones - final Iterator iterator = authnRequest.getPersonalAttributeList().iterator(); - IPersonalAttributeList cleanPerAttrList = (PersonalAttributeList) authnRequest.getPersonalAttributeList(); - while (iterator.hasNext()) { - - final PersonalAttribute attribute = iterator.next(); - - // Verify if the attribute name exits. - final String attributeName = super.getSamlCoreProperties() - .getProperty(attribute.getName()); - - if (StringUtils.isBlank(attributeName)) { - LOG.info("Attribute name: {} was not found. It will be removed from the request object", attribute.getName()); - cleanPerAttrList.remove(attribute.getName()); - } - - } - authnRequest.setPersonalAttributeList(cleanPerAttrList); - - return authnRequest; - - } - - /** - * Validate stork attribute query request. - * - * @param tokenSaml the token SAML - * - * @return the STORK attribute query request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAttrQueryRequest validateSTORKAttrQueryRequest(final byte[] tokenSaml) - throws STORKSAMLEngineException { - LOG.info("validateSTORKAttrQueryRequest"); - - //final AttributeQuery samlRequest = (AttributeQuery) validateStorkSaml(tokenSaml); - final CustomRequestAbstractType samlRequest = (CustomRequestAbstractType) validateStorkSaml(tokenSaml); - - LOG.debug("Validate Extensions."); - final Validator validatorExt = new ExtensionsSchemaValidator(); - try { - validatorExt.validate(samlRequest.getExtensions()); - } catch (ValidationException e) { - LOG.error("ValidationException: validate Extensions.", e); - throw new STORKSAMLEngineException(e); - } - - LOG.debug("Generate STORKAttrQueryRequest."); - final STORKAttrQueryRequest attrRequest = processAttrExtensions(samlRequest - .getExtensions()); - - attrRequest.setCountry(this.getCountry(samlRequest.getSignature() - .getKeyInfo())); - - attrRequest.setAlias(this.getAlias(samlRequest.getSignature() - .getKeyInfo(), super.getSigner().getTrustStore())); - - attrRequest.setSamlId(samlRequest.getID()); - attrRequest.setDestination(samlRequest.getDestination()); - attrRequest.setAssertionConsumerServiceURL(samlRequest - .getAssertionConsumerServiceURL()); - - /*authnRequest.setProviderName(samlRequest.getProviderName());*/ - attrRequest.setIssuer(samlRequest.getIssuer().getValue()); - - //Delete unknown elements from requested ones - final Iterator iterator = attrRequest.getPersonalAttributeList().iterator(); - IPersonalAttributeList cleanPerAttrList = (PersonalAttributeList) attrRequest.getPersonalAttributeList(); - while (iterator.hasNext()) { - - final PersonalAttribute attribute = iterator.next(); - - // Verify if the attribute name exits. - final String attributeName = super.getSamlCoreProperties() - .getProperty(attribute.getName()); - - if (StringUtils.isBlank(attributeName)) { - LOG.info("Attribute name: {} was not found. It will be removed from the request object", attribute.getName()); - cleanPerAttrList.remove(attribute.getName()); - } - - } - attrRequest.setPersonalAttributeList(cleanPerAttrList); - - return attrRequest; - - } - - /** - * Validate stork logout request. - * - * @param tokenSaml the token SAML - * - * @return the STORK logout request - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKLogoutRequest validateSTORKLogoutRequest(final byte[] tokenSaml) - throws STORKSAMLEngineException { - LOG.info("validateSTORKLogoutRequest"); - - final LogoutRequest samlRequest = (LogoutRequest)validateStorkSaml(tokenSaml); - - LOG.debug("Validate Extensions."); - final Validator validatorExt = new ExtensionsSchemaValidator(); - try { - validatorExt.validate(samlRequest.getExtensions()); - } catch (ValidationException e) { - LOG.error("ValidationException: validate Extensions.", e); - throw new STORKSAMLEngineException(e); - } - - LOG.debug("Generate STORKLogoutRequest."); - final STORKLogoutRequest logoutRequest = new STORKLogoutRequest(); - - logoutRequest.setCountry(this.getCountry(samlRequest.getSignature() - .getKeyInfo())); - - logoutRequest.setAlias(this.getAlias(samlRequest.getSignature() - .getKeyInfo(), super.getSigner().getTrustStore())); - - logoutRequest.setSamlId(samlRequest.getID()); - logoutRequest.setDestination(samlRequest.getDestination()); - - logoutRequest.setIssuer(samlRequest.getIssuer().getValue()); - - logoutRequest.setSpProvidedId(samlRequest.getNameID().getValue()); - - return logoutRequest; - - } - - /** - * Validate stork authentication response. - * - * @param tokenSaml the token SAML - * @param userIP the user IP - * - * @return the Stork authentication response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnResponse validateSTORKAuthnResponse( - final byte[] tokenSaml, final String userIP) - throws STORKSAMLEngineException { - - LOG.info("validateSTORKAuthnResponse"); - final Response samlResponse = (Response) validateStorkSaml(tokenSaml); - - LOG.debug("Create StorkAuthResponse."); - final STORKAuthnResponse authnResponse = new STORKAuthnResponse(); - - authnResponse.setCountry(this.getCountry(samlResponse.getSignature() - .getKeyInfo())); - - LOG.debug("Set ID."); - authnResponse.setSamlId(samlResponse.getID()); - LOG.debug("Set InResponseTo."); - authnResponse.setInResponseTo(samlResponse.getInResponseTo()); - LOG.debug("Set statusCode."); - authnResponse.setStatusCode(samlResponse.getStatus().getStatusCode() - .getValue()); - - // Subordinate code. - if (samlResponse.getStatus().getStatusCode().getStatusCode() != null) { - authnResponse.setSubStatusCode(samlResponse.getStatus() - .getStatusCode().getStatusCode().getValue()); - } - - if (samlResponse.getStatus().getStatusMessage() != null) { - LOG.debug("Set statusMessage."); - authnResponse.setMessage(samlResponse.getStatus() - .getStatusMessage().getMessage()); - } - - LOG.debug("validateStorkResponse"); - final Assertion assertion = (Assertion) validateStorkResponse( - samlResponse, userIP); - - if(assertion!=null){ - final DateTime serverDate = new DateTime(); - - if (assertion.getConditions().getNotOnOrAfter().isBefore(serverDate)) { - LOG.error("Token date expired (getNotOnOrAfter = " - + assertion.getConditions().getNotOnOrAfter() - + ", server_date: " + serverDate + ")"); - throw new STORKSAMLEngineException( - "Token date expired (getNotOnOrAfter = " - + assertion.getConditions().getNotOnOrAfter() - + " ), server_date: " + serverDate); - } - - LOG.debug("Set notOnOrAfter."); - authnResponse.setNotOnOrAfter(assertion.getConditions() - .getNotOnOrAfter()); - - LOG.debug("Set notBefore."); - authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); - - authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); - - authnResponse.setAudienceRestriction(((AudienceRestriction) assertion - .getConditions().getAudienceRestrictions().get(0)) - .getAudiences().get(0).getAudienceURI()); - authnResponse.setAssertions(samlResponse.getAssertions()); - } - - // Case no error. - if (assertion!=null && StatusCode.SUCCESS_URI.equalsIgnoreCase(authnResponse - .getStatusCode())) { - LOG.debug("Status Success. Set PersonalAttributeList."); - authnResponse - .setPersonalAttributeList(generatePersonalAttributeList(assertion)); - authnResponse.setFail(false); - } else { - LOG.debug("Status Fail."); - authnResponse.setFail(true); - } - LOG.debug("Return result."); - return authnResponse; - - } - - /** - * Validate stork authentication response. - * - * @param tokenSaml the token SAML - * @param userIP the user IP - * - * @return the Stork authentication response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAuthnResponse validateSTORKAuthnResponseWithQuery( - final byte[] tokenSaml, final String userIP) - throws STORKSAMLEngineException { - - LOG.info("validateSTORKAuthnResponse"); - final Response samlResponse = (Response) validateStorkSaml(tokenSaml); - - LOG.debug("Create StorkAuthResponse."); - final STORKAuthnResponse authnResponse = new STORKAuthnResponse(); - - authnResponse.setCountry(this.getCountry(samlResponse.getSignature() - .getKeyInfo())); - - LOG.debug("Set ID."); - authnResponse.setSamlId(samlResponse.getID()); - LOG.debug("Set InResponseTo."); - authnResponse.setInResponseTo(samlResponse.getInResponseTo()); - LOG.debug("Set statusCode."); - authnResponse.setStatusCode(samlResponse.getStatus().getStatusCode() - .getValue()); - - // Subordinate code. - if (samlResponse.getStatus().getStatusCode().getStatusCode() != null) { - authnResponse.setSubStatusCode(samlResponse.getStatus() - .getStatusCode().getStatusCode().getValue()); - } - - if (samlResponse.getStatus().getStatusMessage() != null) { - LOG.debug("Set statusMessage."); - authnResponse.setMessage(samlResponse.getStatus() - .getStatusMessage().getMessage()); - } - - LOG.debug("validateStorkResponse"); - final Assertion assertion = (Assertion) validateStorkResponse( - samlResponse, userIP); - - if(assertion!=null){ - final DateTime serverDate = new DateTime(); - - if (assertion.getConditions().getNotOnOrAfter().isBefore(serverDate)) { - LOG.error("Token date expired (getNotOnOrAfter = " - + assertion.getConditions().getNotOnOrAfter() - + ", server_date: " + serverDate + ")"); - throw new STORKSAMLEngineException( - "Token date expired (getNotOnOrAfter = " - + assertion.getConditions().getNotOnOrAfter() - + " ), server_date: " + serverDate); - } - - LOG.debug("Set notOnOrAfter."); - authnResponse.setNotOnOrAfter(assertion.getConditions() - .getNotOnOrAfter()); - - LOG.debug("Set notBefore."); - authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); - - authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); - - authnResponse.setAudienceRestriction(((AudienceRestriction) assertion - .getConditions().getAudienceRestrictions().get(0)) - .getAudiences().get(0).getAudienceURI()); - } - - // Case no error. - if (assertion!=null && StatusCode.SUCCESS_URI.equalsIgnoreCase(authnResponse - .getStatusCode())) { - LOG.debug("Status Success. Set PersonalAttributeList."); - authnResponse - .setPersonalAttributeList(generatePersonalAttributeList(assertion)); - authnResponse.setFail(false); - } else { - LOG.debug("Status Fail."); - authnResponse.setFail(true); - } - - authnResponse.setAssertions(samlResponse.getAssertions()); - if (samlResponse.getAssertions().size() > 1) - { - PersonalAttributeList total = new PersonalAttributeList(); - List attrList = new ArrayList(); - for (int i = 0; i < samlResponse.getAssertions().size(); i++) - { - Assertion tempAssertion = (Assertion)samlResponse.getAssertions().get(i); - IPersonalAttributeList temp = generatePersonalAttributeList(tempAssertion); - if (temp != null) - { - attrList.add(temp); - for (PersonalAttribute attribute : temp) { - PersonalAttribute attr = (PersonalAttribute)attribute.clone(); - attr.setName(attr.getName()+tempAssertion.getID()); - total.add(attr); - } - } - } - authnResponse.setPersonalAttributeLists(attrList); - authnResponse.setTotalPersonalAttributeList(total); - } - - LOG.debug("Return result."); - return authnResponse; - - } - - /** - * Validate stork attribute query response. - * - * @param tokenSaml the token SAML - * @param userIP the user IP - * - * @return the Stork attribute query response - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public STORKAttrQueryResponse validateSTORKAttrQueryResponse( - final byte[] tokenSaml, final String userIP) - throws STORKSAMLEngineException { - - LOG.info("validateSTORKAttrQueryResponse"); - final Response samlResponse = (Response) validateStorkSaml(tokenSaml); - - LOG.debug("Create StorkAttrQueryResponse."); - final STORKAttrQueryResponse attrQueryResponse = new STORKAttrQueryResponse(); - - attrQueryResponse.setCountry(this.getCountry(samlResponse.getSignature() - .getKeyInfo())); - - LOG.debug("Set ID."); - attrQueryResponse.setSamlId(samlResponse.getID()); - LOG.debug("Set InResponseTo."); - attrQueryResponse.setInResponseTo(samlResponse.getInResponseTo()); - LOG.debug("Set statusCode."); - attrQueryResponse.setStatusCode(samlResponse.getStatus().getStatusCode() - .getValue()); - - - // Subordinate code. - if (samlResponse.getStatus().getStatusCode().getStatusCode() != null) { - attrQueryResponse.setSubStatusCode(samlResponse.getStatus() - .getStatusCode().getStatusCode().getValue()); - } - - if (samlResponse.getStatus().getStatusMessage() != null) { - LOG.debug("Set statusMessage."); - attrQueryResponse.setMessage(samlResponse.getStatus() - .getStatusMessage().getMessage()); - } - - LOG.debug("validateStorkResponse"); - final Assertion assertion = (Assertion) validateStorkResponse( - samlResponse, userIP); - - if(assertion!=null){ - final DateTime serverDate = new DateTime(); - - attrQueryResponse.setAssertion(assertion); - - if (assertion.getConditions().getNotOnOrAfter().isBefore(serverDate)) { - LOG.error("Token date expired (getNotOnOrAfter = " - + assertion.getConditions().getNotOnOrAfter() - + ", server_date: " + serverDate + ")"); - throw new STORKSAMLEngineException( - "Token date expired (getNotOnOrAfter = " - + assertion.getConditions().getNotOnOrAfter() - + " ), server_date: " + serverDate); - } - - LOG.debug("Set notOnOrAfter."); - attrQueryResponse.setNotOnOrAfter(assertion.getConditions() - .getNotOnOrAfter()); - - LOG.debug("Set notBefore."); - attrQueryResponse.setNotBefore(assertion.getConditions().getNotBefore()); - - attrQueryResponse.setNotBefore(assertion.getConditions().getNotBefore()); - - attrQueryResponse.setAudienceRestriction(((AudienceRestriction) assertion - .getConditions().getAudienceRestrictions().get(0)) - .getAudiences().get(0).getAudienceURI()); - } - - // Case no error. - if (assertion!=null && StatusCode.SUCCESS_URI.equalsIgnoreCase(attrQueryResponse - .getStatusCode())) { - LOG.debug("Status Success. Set PersonalAttributeList."); - attrQueryResponse - .setPersonalAttributeList(generatePersonalAttributeList(assertion)); - attrQueryResponse.setFail(false); - } else { - LOG.debug("Status Fail."); - attrQueryResponse.setFail(true); - } - - attrQueryResponse.setAssertions(samlResponse.getAssertions()); - if (samlResponse.getAssertions().size() > 1) - { - PersonalAttributeList total = new PersonalAttributeList(); - List attrList = new ArrayList(); - for (int i = 0; i < samlResponse.getAssertions().size(); i++) - { - Assertion tempAssertion = (Assertion)samlResponse.getAssertions().get(i); - IPersonalAttributeList temp = generatePersonalAttributeList(tempAssertion); - if (temp != null) - { - attrList.add(temp); - for (PersonalAttribute attribute : temp) { - PersonalAttribute attr = (PersonalAttribute)attribute.clone(); - attr.setName(attr.getName()+tempAssertion.getID()); - total.add(attr); - } - } - } - attrQueryResponse.setPersonalAttributeLists(attrList); - attrQueryResponse.setTotalPersonalAttributeList(total); - } - - LOG.debug("Return result."); - return attrQueryResponse; - - } - - /** - * Validate stork response. - * - * @param samlResponse the SAML response - * @param userIP the user IP - * - * @return the assertion - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private Assertion validateStorkResponse(final Response samlResponse, - final String userIP) throws STORKSAMLEngineException { - // Exist only one Assertion - - if (samlResponse.getAssertions() == null - || samlResponse.getAssertions().isEmpty()) { - LOG.info("Assertion is null or empty."); //in replace of throw new STORKSAMLEngineException("Assertion is null or empty.") - return null; - } - - final Assertion assertion = (Assertion) samlResponse.getAssertions() - .get(0); - - LOG.debug("Verified method Bearer"); - for (final Iterator iter = assertion.getSubject() - .getSubjectConfirmations().iterator(); iter.hasNext();) { - final SubjectConfirmation element = iter.next(); - final boolean isBearer = SubjectConfirmation.METHOD_BEARER - .equals(element.getMethod()); - - final boolean ipValidate = super.getSamlCoreProperties() - .isIpValidation(); - - if (ipValidate) { - if (isBearer) { - if (StringUtils.isBlank(userIP)) { - LOG.error("browser_ip is null or empty."); - throw new STORKSAMLEngineException( - "browser_ip is null or empty."); - } else if (StringUtils.isBlank(element - .getSubjectConfirmationData().getAddress())) { - LOG.error("token_ip attribute is null or empty."); - throw new STORKSAMLEngineException( - "token_ip attribute is null or empty."); - } - } - - final boolean ipEqual = element.getSubjectConfirmationData() - .getAddress().equals(userIP); - - // Validation ipUser - if (!ipEqual && ipValidate) { - LOG.error("SubjectConfirmation BEARER: "); - throw new STORKSAMLEngineException( - "IPs doesn't match : token_ip (" - + element.getSubjectConfirmationData() - .getAddress() + ") browser_ip (" - + userIP + ")"); - } - } - - } - return assertion; - } - - /** - * Validate stork SAML. - * - * @param tokenSaml the token SAML - * - * @return the signable SAML object - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - private SignableSAMLObject validateStorkSaml(final byte[] tokenSaml) - throws STORKSAMLEngineException { - - LOG.info("Validate StorkSaml message."); - - if (tokenSaml == null) { - LOG.error("Saml authentication request is null."); - throw new STORKSAMLEngineException( - "Saml authentication request is null."); - } - - LOG.debug("Generate AuthnRequest from request."); - SignableSAMLObject samlObject; - - try { - samlObject = (SignableSAMLObject) super.unmarshall(tokenSaml); - } catch (SAMLEngineException e) { - LOG.error("SAMLEngineException unmarshall.", e); - throw new STORKSAMLEngineException(e); - } - - boolean validateSign = true; - - if (StringUtils.isNotBlank(super.getSamlCoreProperties().getProperty( - "validateSignature"))) { - validateSign = Boolean.valueOf(super.getSamlCoreProperties() - .getProperty("validateSignature")); - } - - if (validateSign) { - LOG.debug("Validate Signature."); - try { - super.validateSignature(samlObject); - } catch (SAMLEngineException e) { - LOG.error("SAMLEngineException validateSignature.", e); - throw new STORKSAMLEngineException(e); - } - } - - LOG.debug("Validate Schema."); - final ValidatorSuite validatorSuite = Configuration - .getValidatorSuite("saml2-core-schema-validator"); - try { - if (samlObject.getElementQName().toString().endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) - { - CustomAttributeQueryValidator val = - new CustomAttributeQueryValidator(); - val.validate((CustomAttributeQuery)samlObject); - } - else if (samlObject instanceof Response - && ((Response) samlObject).getAssertions().size() > 1) { - MultipleAssertionResponseValidator val = - new MultipleAssertionResponseValidator(); - val.validate((Response)samlObject); - } - else - validatorSuite.validate(samlObject); - } catch (ValidationException e) { - LOG.error("ValidationException.", e); - throw new STORKSAMLEngineException(e); - } - - return samlObject; - } - - private boolean isComplex(XMLObject xmlObject) - { - boolean isComplex = false; - - final XSAnyImpl complexValue = (XSAnyImpl) xmlObject; - - for (int nextComplexValue = 0; nextComplexValue < complexValue - .getUnknownXMLObjects().size(); nextComplexValue++) { - - final XSAnyImpl simple = (XSAnyImpl) complexValue - .getUnknownXMLObjects().get( - nextComplexValue); - - if (simple.getElementQName().getLocalPart() != null) - { - isComplex = true; - break; - } - } - - return isComplex; - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java deleted file mode 100644 index 724a522d1..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java +++ /dev/null @@ -1,69 +0,0 @@ -package eu.stork.peps.auth.engine; - -import org.bouncycastle.asn1.DERObjectIdentifier; -import org.bouncycastle.jce.X509Principal; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Utility class used to decrease complexity of comparison of 2 X509principal - * - * @author vanegdi - * @version $Revision: 1.00 $, $Date: 2013-05-24 20:53:51 $ - */ -public final class X509PrincipalUtil{ - - private static final DERObjectIdentifier[] DER_OBJECT_IDENTIFIERS_ARRAY= { - X509Principal.CN, - X509Principal.OU, - X509Principal.O, - X509Principal.L, - X509Principal.ST, - X509Principal.C, - X509Principal.E - }; - - private static final Logger LOG = LoggerFactory.getLogger(eu.stork.peps.auth.engine.X509PrincipalUtil.class); - - /** - * Compares 2 X509Principals to detect if they equals - * @param principal1 - * @param principal2 - * @return true if arguments are not null and equals - */ - public static boolean equals(X509Principal principal1, X509Principal principal2) { - boolean continueProcess = true; - if (principal1 == null || principal2 == null){ - return false; - } - - int cpt = 0; - while(continueProcess && cpt < DER_OBJECT_IDENTIFIERS_ARRAY.length){ - continueProcess = continueProcess && x509ValuesByIdentifierEquals(principal1, principal2, DER_OBJECT_IDENTIFIERS_ARRAY[cpt]); - cpt++; - } - return continueProcess; - } - - public static boolean equals2(X509Principal principal1, X509Principal principal2) { - - if (principal1 == null || principal2 == null){ - return false; - } - - if (principal1.getName().equals(principal2.getName())) - return true; - else - return false; - - } - - private static boolean x509ValuesByIdentifierEquals(X509Principal principal1, X509Principal principal2, DERObjectIdentifier identifier){ - return principal1.getValues(identifier).equals(principal2.getValues(identifier)); - } - - private X509PrincipalUtil(){ - // default contructor - LOG.error("Fake X509PrincipalUtil : never be called"); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java deleted file mode 100644 index a9efe6362..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface AuthenticationAttributes. - * @author fjquevedo - */ -public interface AuthenticationAttributes extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "AuthenticationAttributes"; - - /** Default element name. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** Local name of the XSI type. */ - String TYPE_LOCAL_NAME = "AuthenticationAttributesType"; - - /** QName of the XSI type. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - - /** - * Gets the citizen country code. - * - * @return the citizen country code - */ - VIDPAuthenticationAttributes getVIDPAuthenticationAttributes(); - - - /** - * Sets the vIDP authentication attributes. - * - * @param newVIDPAuthenticationAttr the new vIDP authentication attributes - */ - void setVIDPAuthenticationAttributes(VIDPAuthenticationAttributes newVIDPAuthenticationAttr); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java deleted file mode 100644 index 4af7524ea..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDCrossBorderShare. - * @author fjquevedo - */ -public interface CitizenCountryCode extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "CitizenCountryCode"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "CitizenCountryCodeType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** - * Gets the SP country. - * - * @return the sP country - */ - String getCitizenCountryCode(); - - - /** - * Sets the citizen country code. - * - * @param citizenCountryCode the new citizen country code - */ - void setCitizenCountryCode(String citizenCountryCode); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java deleted file mode 100644 index b558fc19d..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java +++ /dev/null @@ -1,51 +0,0 @@ -package eu.stork.peps.auth.engine.core; - -import java.util.List; -import javax.xml.namespace.QName; - -import org.opensaml.common.xml.SAMLConstants; -import org.opensaml.saml2.core.Attribute; -import org.opensaml.saml2.core.Subject; -import org.opensaml.saml2.core.SubjectQuery; - -public interface CustomAttributeQuery extends CustomRequestAbstractType { - /** Element local name. */ - public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AttributeQuery"; - - /** Default element name. */ - public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20P_NS, DEFAULT_ELEMENT_LOCAL_NAME, - SAMLConstants.SAML20P_PREFIX); - - /** Local name of the XSI type. */ - public static final String TYPE_LOCAL_NAME = "CustomAttributeQueryType"; - - /** QName of the XSI type. */ - public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20P_NS, TYPE_LOCAL_NAME, - SAMLConstants.SAML20P_PREFIX); - - /** AssertionConsumerServiceURL attribute name. */ - public static final String ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME - = "AssertionConsumerServiceURL"; - - /** - * Gets the Attributes of this query. - * - * @return the list of Attributes of this query - */ - public List getAttributes(); - - /** - * Gets the Subject of this request. - * - * @return the Subject of this request - */ - public Subject getSubject(); - - /** - * Sets the Subject of this request. - * - * @param newSubject the Subject of this request - */ - public void setSubject(Subject newSubject); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java deleted file mode 100644 index 77dd8c4a5..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java +++ /dev/null @@ -1,176 +0,0 @@ -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.joda.time.DateTime; -import org.opensaml.common.SAMLVersion; -import org.opensaml.common.SignableSAMLObject; -import org.opensaml.common.xml.SAMLConstants; -import org.opensaml.saml2.common.Extensions; -import org.opensaml.saml2.core.Issuer; - -public interface CustomRequestAbstractType extends SignableSAMLObject { - - /** Local name of the XSI type. */ - public static final String TYPE_LOCAL_NAME = "RequestAbstractType"; - - /** QName of the XSI type. */ - public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20P_NS, TYPE_LOCAL_NAME, - SAMLConstants.SAML20P_PREFIX); - - /** ID attribute name. */ - public static final String ID_ATTRIB_NAME = "ID"; - - /** Version attribute name. */ - public static final String VERSION_ATTRIB_NAME = "Version"; - - /** IssueInstant attribute name. */ - public static final String ISSUE_INSTANT_ATTRIB_NAME = "IssueInstant"; - - /** Destination attribute name. */ - public static final String DESTINATION_ATTRIB_NAME = "Destination"; - - /** Destination attribute name. */ - public static final String ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME = "AssertionConsumerServiceURL"; - - /** Consent attribute name. */ - public static final String CONSENT_ATTRIB_NAME = "Consent"; - - /** Unspecified consent URI. */ - public static final String UNSPECIFIED_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:unspecified"; - - /** Obtained consent URI. */ - public static final String OBTAINED_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:obtained"; - - /** Prior consent URI. */ - public static final String PRIOR_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:prior"; - - /** Implicit consent URI. */ - public static final String IMPLICIT_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:current-implicit"; - - /** Explicit consent URI. */ - public static final String EXPLICIT_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:current-explicit"; - - /** Unavailable consent URI. */ - public static final String UNAVAILABLE_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:unavailable"; - - /** Inapplicable consent URI. */ - public static final String INAPPLICABLE_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:inapplicable"; - - /** - * Gets the SAML Version of this request. - * - * @return the SAML Version of this request. - */ - public SAMLVersion getVersion(); - - /** - * Sets the SAML Version of this request. - * - * @param newVersion the SAML Version of this request - */ - public void setVersion(SAMLVersion newVersion); - - /** - * Gets the unique identifier of the request. - * - * @return the unique identifier of the request - */ - public String getID(); - - /** - * Sets the unique identifier of the request. - * - * @param newID the unique identifier of the request - */ - - public void setID(String newID); - - /** - * Gets the date/time the request was issued. - * - * @return the date/time the request was issued - */ - - public DateTime getIssueInstant(); - - /** - * Sets the date/time the request was issued. - * - * @param newIssueInstant the date/time the request was issued - */ - public void setIssueInstant(DateTime newIssueInstant); - - /** - * Gets the URI of the destination of the request. - * - * @return the URI of the destination of the request - */ - public String getDestination(); - - /** - * Sets the URI of the destination of the request. - * - * @param newDestination the URI of the destination of the request - */ - public void setDestination(String newDestination); - - /** - * Sets the index of the particular Assertion Consumer Service to which the response to this request should be - * delivered. - * - * @param newAssertionConsumerServiceIndex the new value of the AssertionConsumerServiceIndex attribute - */ - public void setAssertionConsumerServiceURL(String newServiceUrl); - - /** - * Gets the URL of the particular Assertion Consumer Service to which the response to this request should be - * delivered. - * - * @return the value of the AssertionConsumerServiceURL attribute - */ - public String getAssertionConsumerServiceURL(); - - /** - * Gets the consent obtained from the principal for sending this request. - * - * @return the consent obtained from the principal for sending this request - */ - public String getConsent(); - - /** - * Sets the consent obtained from the principal for sending this request. - * - * @param newConsent the new consent obtained from the principal for sending this request - */ - public void setConsent(String newConsent); - - /** - * Gets the issuer of this request. - * - * @return the issuer of this request - */ - public Issuer getIssuer(); - - /** - * Sets the issuer of this request. - * - * @param newIssuer the issuer of this request - */ - public void setIssuer(Issuer newIssuer); - - /** - * Gets the Extensions of this request. - * - * @return the Status of this request - */ - public Extensions getExtensions(); - - /** - * Sets the Extensions of this request. - * - * @param newExtensions the Extensions of this request - */ - public void setExtensions(Extensions newExtensions); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java deleted file mode 100644 index 03541ece1..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDCrossBorderShare. - * @author fjquevedo - */ -public interface EIDCrossBorderShare extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "eIDCrossBorderShare"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "eIDCrossBorderShareType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - - /** - * Gets the eID cross border share. - * - * @return the eID cross border share - */ - String getEIDCrossBorderShare(); - - - /** - * Sets the eID cross border share. - * - * @param eIDCrossBorderShare the new eID cross border share - */ - void setEIDCrossBorderShare(String eIDCrossBorderShare); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java deleted file mode 100644 index 14c504510..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDCrossSectorShare. - * @author fjquevedo - */ -public interface EIDCrossSectorShare extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String ELEM_LOCAL_NAME = "eIDCrossSectorShare"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), ELEM_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "eIDCrossSectorShareType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** - * Gets the eID cross sector share. - * - * @return the eID cross sector share - */ - String getEIDCrossSectorShare(); - - /** - * Sets the eID cross sector share. - * - * @param eIDCrossSectorShare the new eID cross sector share - */ - void setEIDCrossSectorShare(String eIDCrossSectorShare); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java deleted file mode 100644 index 0202f000c..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDSectorShare. - * @author fjquevedo - */ -public interface EIDSectorShare extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "eIDSectorShare"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "eIDSectorShare"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - - /** - * Gets the eID sector share. - * - * @return the eID sector share - */ - String getEIDSectorShare(); - - /** - * Sets the eID sector share. - * - * @param eIDSectorShare the new eID sector share - */ - void setEIDSectorShare(String eIDSectorShare); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java deleted file mode 100644 index d99d23896..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * STORK Quality Authentication Assurance Level Attribute Interface. - * - * @author fjquevedo - */ -public interface QAAAttribute extends SAMLObject { - - /** Element local name. */ - String DEF_LOCAL_NAME = "QualityAuthenticationAssuranceLevel"; - - /** Default element name. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** Local name of the XSI type. */ - String TYPE_LOCAL_NAME = "QualityAuthenticationAssuranceLevelAbstractType"; - - /** QName of the XSI type. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** The minimum value allowed. */ - int MIN_VALUE = 1; - - /** The Max value allowed. */ - int MAX_VALUE = 4; - - /** - * Gets the qAA level. - * - * @return the qAA level - */ - String getQaaLevel(); - - /** - * Sets the qAA level. - * - * @param qaaLevel the new qAA level - * - */ - void setQaaLevel(String qaaLevel); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java deleted file mode 100644 index ffd32b3cf..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; -import org.opensaml.xml.AttributeExtensibleXMLObject; -import org.opensaml.xml.schema.XSBooleanValue; -import org.opensaml.xml.XMLObject; - -/** - * The Interface RequestedAttribute. - * - * @author fjquevedo - */ -public interface RequestedAttribute extends SAMLObject, - AttributeExtensibleXMLObject { - - /** Element local name. */ - String DEF_LOCAL_NAME = "RequestedAttribute"; - - /** Default element name. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** Local name of the XSI type. */ - String TYPE_LOCAL_NAME = "RequestedAttributeAbstractType"; - - /** QName of the XSI type. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** NAME_ATTRIB_NAME attribute name. */ - String NAME_ATTRIB_NAME = "Name"; - - /** NAME_FORMAT_ATTRIB_NAME attribute name. */ - String NAME_FORMAT_ATTR = "NameFormat"; - - /** IS_REQUIRED_ATTRIB_NAME attribute name. */ - String IS_REQUIRED_ATTR = "isRequired"; - - /** FRIENDLY_NAME_ATTRIB_NAME attribute name. */ - String FRIENDLY_NAME_ATT = "FriendlyName"; - - /** Unspecified attribute format ID. */ - String UNSPECIFIED = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"; - - /** URI reference attribute format ID. */ - String URI_REFERENCE = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"; - - /** Basic attribute format ID. */ - String BASIC = "urn:oasis:names:tc:SAML:2.0:attrname-format:basic"; - - /** - * Gets the name. - * - * @return the name - */ - String getName(); - - /** - * Sets the name. - * - * @param name the new name - */ - void setName(String name); - - /** - * Gets the name format. - * - * @return the name format - */ - String getNameFormat(); - - /** - * Sets the name format. - * - * @param nameFormat the new name format - */ - void setNameFormat(String nameFormat); - - /** - * Gets the friendly name. - * - * @return the friendly name - */ - String getFriendlyName(); - - /** - * Sets the friendly name. - * - * @param friendlyName the new friendly name - */ - void setFriendlyName(String friendlyName); - - /** - * Gets the checks if is required. - * - * @return the checks if is required - */ - String isRequired(); - - /** - * Gets the checks if is required xs boolean. - * - * @return the checks if is required xs boolean - */ - String getIsRequiredXSBoolean(); - - /** - * Sets the checks if is required. - * - * @param newIsRequired the new checks if is required - */ - void setIsRequired(String newIsRequired); - - /** - * Gets the attribute values. - * - * @return the attribute values - */ - List getAttributeValues(); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java deleted file mode 100644 index 6e3da28c3..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import java.util.List; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface RequestedAttributes. - * - * @author fjquevedo - */ -public interface RequestedAttributes extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "RequestedAttributes"; - - /** Default element name. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** Local name of the XSI type. */ - String TYPE_LOCAL_NAME = "RequestedAttributesType"; - - /** QName of the XSI type. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** - * Gets the attributes. - * - * @return the attributes - */ - List getAttributes(); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java deleted file mode 100644 index cbedcf7d9..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -/** - * The Enumeration SAMLCore. - * - * @author fjquevedo - */ - -public enum SAMLCore { - - /** The consent authentication request. */ - CONSENT_AUTHN_REQ("consentAuthnRequest"), - - /** The consent authentication response. */ - CONSENT_AUTHN_RES("consentAuthnResponse"), - - /** The FORC e_ auth n_ tag. */ - FORCE_AUTHN_TAG("forceAuthN"), - - /** The I s_ passiv e_ tag. */ - IS_PASSIVE_TAG("isPassive"), - - /** The FORMA t_ entity. */ - FORMAT_ENTITY("formatEntity"), - - /** The FRIENDLY name. */ - FRIENDLY_NAME("friendlyName"), - - /** The IS_REQUIRED AN ATTRIBUTE */ - IS_REQUIRED("isRequired"), - - /** The PRO t_ bindin g_ tag. */ - PROT_BINDING_TAG("protocolBinding"), - - /** The ASSER t_ con s_ tag. */ - ASSERT_CONS_TAG("assertionConsumerServiceURL"), - - /** The REQUESTE r_ tag. */ - REQUESTER_TAG("requester"), - - /** The RESPONDE r_ tag. */ - RESPONDER_TAG("responder"), - - /** The STOR k10_ ns. */ - STORK10_NS("urn:eu:stork:names:tc:STORK:1.0:assertion"), - - /** The STOR k10 p_ ns. */ - STORK10P_NS("urn:eu:stork:names:tc:STORK:1.0:protocol"), - - /** The STOR k10_ prefix. */ - STORK10_PREFIX("stork"), - - /** The STOR k10 p_ prefix. */ - STORK10P_PREFIX("storkp"), - - /** The STOR k10_ bas e_ uri. */ - STORK10_BASE_URI("http://www.stork.gov.eu/1.0/"), - - /** The ON e_ tim e_ use. */ - ONE_TIME_USE("oneTimeUse"); - - /** The value. */ - private String value; - - /** - * Instantiates a new sAML core. - * - * @param fullName the full name - */ - private SAMLCore(final String fullName) { - this.value = fullName; - } - - /** - * Gets the value. - * - * @return the value - */ - public String getValue() { - return value; - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java deleted file mode 100644 index e846983d8..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import java.security.KeyStore; -import java.security.cert.X509Certificate; - -import org.opensaml.common.SAMLObject; -import org.opensaml.common.SignableSAMLObject; - -import eu.stork.peps.exceptions.SAMLEngineException; - -/** - * The Interface SAMLEngineSignI. - * - * @author fjquevedo - */ -public interface SAMLEngineSignI { - - /** - * Sign. - * - * @param tokenSaml the token SAML - * - * @return the sAML object - * - * @throws SAMLEngineException the SAML engine exception - */ - SAMLObject sign(SignableSAMLObject tokenSaml) throws SAMLEngineException; - - /** - * Gets the certificate. - * - * @return the certificate - */ - X509Certificate getCertificate(); - - /** - * Gets the trustStore used when validating SAMLTokens - * - * @return the trustStore - * - */ - KeyStore getTrustStore(); - - /** - * Validate signature. - * - * @param tokenSaml the token SAML - * - * @return the sAML object - * - * @throws SAMLEngineException the SAML engine exception - */ - SAMLObject validateSignature(SignableSAMLObject tokenSaml) - throws SAMLEngineException; - - /** - * Initialize the signature module. - * - * @param fileConf the configuration file. - * - * @throws SAMLEngineException the STORKSAML engine runtime - * exception - */ - void init(String fileConf) throws SAMLEngineException; - - /** - * Load cryptographic service provider. - * - * @throws SAMLEngineException the SAML engine exception - */ - void loadCryptServiceProvider() throws SAMLEngineException; - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java deleted file mode 100644 index 9510bf790..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface SPApplication. - * - * @author fjquevedo - */ -public interface SPApplication extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "spApplication"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "spApplicationType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** - * Gets the service provider application. - * - * @return the service provider application - */ - String getSPApplication(); - - /** - * Sets the service provider application. - * - * @param spApplication the new service provider application - */ - void setSPApplication(String spApplication); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java deleted file mode 100644 index 829ace878..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface SPCountry. - * - * @author fjquevedo - */ -public interface SPCountry extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "spCountry"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "spCountryType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** - * Gets the service provider country. - * - * @return the service provider country - */ - String getSPCountry(); - - /** - * Sets the service provider country. - * - * @param spCountry the new service provider country - */ - void setSPCountry(String spCountry); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPID.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPID.java deleted file mode 100644 index bd13f6dbf..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPID.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDCrossBorderShare. - * @author iinigo - */ -public interface SPID extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "SPID"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "SPIDType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** - * Gets the SP ID. - * - * @return the SP ID - */ - String getSPID(); - - - /** - * Sets the SP ID. - * - * @param SPID the new SP ID - */ - void setSPID(String newSPID); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java deleted file mode 100644 index bc870c2cc..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDCrossBorderShare. - * @author iinigo - */ -public interface SPInformation extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "SPInformation"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "SPInformationType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** - * Gets the SP Id. - * - * @return the SP Id - */ - SPID getSPID(); - - - /** - * Sets the SP Id. - * - * @param newSPId the new SP Id - */ - void setSPID(SPID newSPID); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java deleted file mode 100644 index add45023c..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface EIDCrossBorderShare. - * - * @author fjquevedo - */ -public interface SPInstitution extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "spInstitution"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "spInstitutionType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** - * Gets the service provider institution. - * - * @return the service provider institution - */ - String getSPInstitution(); - - /** - * Sets the service provider institution. - * - * @param spInstitution the new service provider institution - */ - void setSPInstitution(String spInstitution); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java deleted file mode 100644 index 8322a0d47..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface SPSector. - * - * @author fjquevedo - */ -public interface SPSector extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "spSector"; - - /** The Constant DEFAULT_ELEMENT_NAME. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** The Constant TYPE_LOCAL_NAME. */ - String TYPE_LOCAL_NAME = "spSectorType"; - - /** The Constant TYPE_NAME. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10_PREFIX.getValue()); - - /** - * Gets the service provider sector. - * - * @return the service provider sector - */ - String getSPSector(); - - /** - * Sets the service provider sector. - * - * @param spSector the new service provider sector - */ - void setSPSector(String spSector); -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java deleted file mode 100644 index 4c314ae68..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java +++ /dev/null @@ -1,508 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import java.util.Properties; - -import org.apache.commons.lang.StringUtils; -import org.opensaml.common.xml.SAMLConstants; -import org.opensaml.saml2.core.NameIDType; -import org.opensaml.saml2.core.RequestAbstractType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.exceptions.SAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; - -/** - * The Class SAMLCore. - * - * @author fjquevedo - */ -public final class STORKSAMLCore { - - /** The Constant LOGGER. */ - private static final Logger LOGGER = LoggerFactory - .getLogger(STORKSAMLCore.class.getName()); - - /** The consent authentication request. */ - private String consentAuthnReq = null; - - /** The consent authentication response. */ - private String consentAuthnResp = null; - - /** The id cross border share. */ - private String eIDCrossBordShare = null; - - /** The e id cross sect share. */ - private String eIDCrossSectShare = null; - - /** The e id sector share. */ - private String eIDSectorShare = null; - - /** The format entity. */ - private String formatEntity = null; - - /** The friendly name. */ - private boolean friendlyName = false; - - /** The IP validation. */ - private boolean ipValidation = false; - - /** The one time use. */ - private boolean oneTimeUse = true; - - /** The protocol binding. */ - private String protocolBinding = null; - - /** The requester. */ - private String requester = null; - - - /** The responder. */ - private String responder = null; - - /** The SAML core properties. */ - private Properties samlCoreProp = null; - - /** The time not on or after. */ - private Integer timeNotOnOrAfter = null; - - /** The is required parameter. */ - private boolean isRequired = true; - - private static final String SAML_ENGINE_LITERAL = "SamlEngine.xml: "; - - /** - * Gets the isRequired. - * - * @return the isRequired - */ - public boolean isRequired() { - return isRequired; - } - - /** - * Sets the isRequired. - * - * @param isRequired the required. - */ - public void setRequired(boolean isRequired) { - this.isRequired = isRequired; - } - - /** - * Instantiates a new sAML core. - * - * @param instance the instance - */ - public STORKSAMLCore(final Properties instance) { - loadConfiguration(instance); - } - - /** - * Gets the consent. - * - * @return the consent - */ - public String getConsentAuthnRequest() { - return consentAuthnReq; - } - - /** - * Gets the consent authentication response. - * - * @return the consent authentication response. - */ - public String getConsentAuthnResp() { - return consentAuthnResp; - } - - /** - * Gets the consent authentication response. - * - * @return the consent authentication response - */ - public String getConsentAuthnResponse() { - return consentAuthnResp; - } - - /** - * Gets the format entity. - * - * @return the format entity - */ - public String getFormatEntity() { - return formatEntity; - } - - /** - * Gets the property. - * - * @param key the key - * - * @return the property - */ - public String getProperty(final String key) { - return samlCoreProp.getProperty(key); - } - - /** - * Gets the protocol binding. - * - * @return the protocol binding - */ - public String getProtocolBinding() { - return protocolBinding; - } - - /** - * Gets the requester. - * - * @return the requester - */ - public String getRequester() { - return requester; - } - - /** - * Gets the responder. - * - * @return the responder - */ - public String getResponder() { - return responder; - } - - /** - * Gets the time not on or after. - * - * @return the time not on or after - */ - public Integer getTimeNotOnOrAfter() { - return timeNotOnOrAfter; - } - - /** - * Checks if is e id cross border share. - * - * @return true, if is e id cross border share - */ - public String iseIDCrossBorderShare() { - return eIDCrossBordShare; - } - - /** - * Checks if is e id cross border share. - * - * @return true, if is e id cross border share - */ - public String iseIDCrossBordShare() { - return eIDCrossBordShare; - } - - /** - * Checks if is e id cross sector share. - * - * @return true, if is e id cross sector share - */ - public String iseIDCrossSectorShare() { - return eIDCrossSectShare; - } - - /** - * Checks if is e id cross sect share. - * - * @return true, if is e id cross sect share - */ - public String iseIDCrossSectShare() { - return eIDCrossSectShare; - } - - /** - * Checks if is e id sector share. - * - * @return true, if is e id sector share - */ - public String iseIDSectorShare() { - return eIDSectorShare; - } - - /** - * Checks if is friendly name. - * - * @return true, if checks if is friendly name - */ - public boolean isFriendlyName() { - return friendlyName; - } - - /** - * Checks if is IP validation. - * - * @return true, if is IP validation - */ - public boolean isIpValidation() { - return ipValidation; - } - - /** - * Checks if is one time use. - * - * @return true, if is one time use - */ - public boolean isOneTimeUse() { - return oneTimeUse; - } - - /** - * Method that loads the configuration file for the SAML Engine. - * - * @param instance the instance of the Engine properties. - */ - private void loadConfiguration(final Properties instance) { - - try { - LOGGER.info("SAMLCore: Loading SAMLEngine properties."); - - samlCoreProp = instance; - - final String parameter = samlCoreProp - .getProperty(SAMLCore.FORMAT_ENTITY.getValue()); - - if ("entity".equalsIgnoreCase(parameter)) { - formatEntity = NameIDType.ENTITY; - } - - friendlyName = Boolean.valueOf(samlCoreProp - .getProperty(SAMLCore.FRIENDLY_NAME.getValue())); - - String isRequiredValue = samlCoreProp. - getProperty(SAMLCore.IS_REQUIRED.getValue()); - if (isRequiredValue != null) { - isRequired = Boolean.valueOf(isRequiredValue); - } - - eIDSectorShare = samlCoreProp - .getProperty("eIDSectorShare"); - eIDCrossSectShare = samlCoreProp - .getProperty("eIDCrossSectorShare"); - eIDCrossBordShare = samlCoreProp - .getProperty("eIDCrossBorderShare"); - - ipValidation = Boolean.valueOf(samlCoreProp - .getProperty("ipAddrValidation")); - - final String oneTimeUseProp = samlCoreProp - .getProperty(SAMLCore.ONE_TIME_USE.getValue()); - - if (StringUtils.isNotBlank(oneTimeUseProp)) { - oneTimeUse = Boolean.valueOf(oneTimeUseProp); - } - - // Protocol Binding - loadProtocolBiding(); - - // Consent Authentication Request - consentAuthnReq = samlCoreProp - .getProperty(SAMLCore.CONSENT_AUTHN_REQ.getValue()); - - if ("unspecified".equalsIgnoreCase(consentAuthnReq)) { - consentAuthnReq = RequestAbstractType.UNSPECIFIED_CONSENT; - } - - loadConsentAuthResp(); - - timeNotOnOrAfter = Integer.valueOf(samlCoreProp - .getProperty("timeNotOnOrAfter")); - - if (timeNotOnOrAfter.intValue() < 0) { - LOGGER.error(SAML_ENGINE_LITERAL + "timeNotOnOrAfter" - + " is negative number."); - - throw new SAMLEngineException(SAML_ENGINE_LITERAL - + "timeNotOnOrAfter" + " is negative number."); - } - - requester = samlCoreProp.getProperty(SAMLCore.REQUESTER_TAG.getValue()); - responder = samlCoreProp.getProperty(SAMLCore.RESPONDER_TAG.getValue()); - - } catch (SAMLEngineException e) { - LOGGER.error("SAMLCore: error loadConfiguration. ", e); - throw new STORKSAMLEngineRuntimeException(e); - } catch (RuntimeException e) { - LOGGER.error("SAMLCore: error loadConfiguration. ", e); - throw new STORKSAMLEngineRuntimeException(e); - } - } - - /** - * Load consent authentication response. - */ - private void loadConsentAuthResp() { - // Consent Authentication Response - consentAuthnResp = samlCoreProp - .getProperty(SAMLCore.CONSENT_AUTHN_RES.getValue()); - - if ("obtained".equalsIgnoreCase(consentAuthnResp)) { - consentAuthnResp = RequestAbstractType.OBTAINED_CONSENT; - } else if ("prior".equalsIgnoreCase(consentAuthnResp)) { - consentAuthnResp = RequestAbstractType.PRIOR_CONSENT; - } else if ("curent-implicit".equalsIgnoreCase(consentAuthnResp)) { - consentAuthnResp = - "urn:oasis:names:tc:SAML:2.0:consent:current-implicit"; - } else if ("curent-explicit".equalsIgnoreCase(consentAuthnResp)) { - consentAuthnResp = - "urn:oasis:names:tc:SAML:2.0:consent:current-explicit"; - } else if ("unspecified".equalsIgnoreCase(consentAuthnResp)) { - consentAuthnResp = RequestAbstractType.UNSPECIFIED_CONSENT; - } - } - - /** - * Load protocol biding. - * - * @throws SAMLEngineException the SAML engine exception - */ - private void loadProtocolBiding() throws SAMLEngineException { - // Protocol Binding - protocolBinding = samlCoreProp.getProperty(SAMLCore.PROT_BINDING_TAG.getValue()); - - if (StringUtils.isBlank(protocolBinding)) { - LOGGER.error(SAML_ENGINE_LITERAL + SAMLCore.PROT_BINDING_TAG - + " it's mandatory."); - throw new SAMLEngineException(SAML_ENGINE_LITERAL - + SAMLCore.PROT_BINDING_TAG + " it's mandatory."); - } else if (protocolBinding.equalsIgnoreCase("HTTP-POST")) { - protocolBinding = SAMLConstants.SAML2_POST_BINDING_URI; - } else { - LOGGER.error(SAML_ENGINE_LITERAL + SAMLCore.PROT_BINDING_TAG - + " it's not supporting."); - - throw new SAMLEngineException(SAML_ENGINE_LITERAL - + SAMLCore.PROT_BINDING_TAG + " it's not supporting."); - } - } - - /** - * Sets the consent authentication response. - * - * @param newConsAuthnResp the new consent authentication response - */ - public void setConsentAuthnResp(final String newConsAuthnResp) { - this.consentAuthnResp = newConsAuthnResp; - } - - /** - * Sets an eID that can be shared outside of the Service Provider’s member state. - * - * @param newEIDCrossBord the new eid cross border share - */ - public void setEIDCrossBordShare(final String newEIDCrossBord) { - this.eIDCrossBordShare = newEIDCrossBord; - } - - /** - * Sets an eID that can be shared outside of the Service Provider’s sector. - * - * @param newEIDCrossSect the new eid cross sect share - */ - public void setEIDCrossSectShare(final String newEIDCrossSect) { - this.eIDCrossSectShare = newEIDCrossSect; - } - - /** - * Sets an eID that can be shared within the Service Provider’s sector. - * - * @param newEIDSectorShare the new eid sector share - */ - public void seteIDSectorShare(final String newEIDSectorShare) { - this.eIDSectorShare = newEIDSectorShare; - } - - /** - * Sets the format entity. - * - * @param newFormatEntity the new format entity - */ - public void setFormatEntity(final String newFormatEntity) { - this.formatEntity = newFormatEntity; - } - - /** - * Sets the friendly name. - * - * @param newFriendlyName the new friendly name - */ - public void setFriendlyName(final boolean newFriendlyName) { - this.friendlyName = newFriendlyName; - } - - /** - * Sets the IP validation. - * - * @param newIpValidation the new IP validation - */ - public void setIpValidation(final boolean newIpValidation) { - this.ipValidation = newIpValidation; - } - - /** - * Sets the one time use. - * - * @param newOneTimeUse the new one time use - */ - public void setOneTimeUse(final boolean newOneTimeUse) { - this.oneTimeUse = newOneTimeUse; - } - - /** - * Sets the protocol binding. - * - * @param newProtBinding the new protocol binding - */ - public void setProtocolBinding(final String newProtBinding) { - this.protocolBinding = newProtBinding; - } - - /** - * Sets the requester. - * - * @param newRequester the new requester - */ - public void setRequester(final String newRequester) { - this.requester = newRequester; - } - - /** - * Sets the responder. - * - * @param newResponder the new responder - */ - public void setResponder(final String newResponder) { - this.responder = newResponder; - } - - /** - * Sets the time not on or after. - * - * @param newTimeNotOnOrAft the new time not on or after - */ - public void setTimeNotOnOrAfter(final Integer newTimeNotOnOrAft) { - this.timeNotOnOrAfter = newTimeNotOnOrAft; - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java deleted file mode 100644 index 6ee9e0e1b..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core; - -import javax.xml.namespace.QName; - -import org.opensaml.common.SAMLObject; - -/** - * The Interface VIDPAuthenticationAttributes. - * - * @author fjquevedo - */ -public interface VIDPAuthenticationAttributes extends SAMLObject { - - /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ - String DEF_LOCAL_NAME = "VIDPAuthenticationAttributes"; - - /** Default element name. */ - QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - /** Local name of the XSI type. */ - String TYPE_LOCAL_NAME = "VIDPAuthenticationAttributesType"; - - /** QName of the XSI type. */ - QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, - SAMLCore.STORK10P_PREFIX.getValue()); - - - /** - * Gets the citizen country code. - * - * @return the citizen country code - */ - CitizenCountryCode getCitizenCountryCode(); - - /** - * Sets the citizen country code. - * - * @param newCitizenCountryCode the new citizen country code - */ - void setCitizenCountryCode(CitizenCountryCode newCitizenCountryCode); - - /** - * Gets the SP information - * - * @return the SP information - */ - SPInformation getSPInformation(); - - /** - * Sets the SP information - * - * @param newSPInformation the new SPInformation - */ - void setSPInformation(SPInformation newSPInformation); - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java deleted file mode 100644 index 2d9039d4c..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.AuthenticationAttributes; - -/** - * The Class AuthenticationAttributesBuilder. - * - * @author fjquevedo - */ -public class AuthenticationAttributesBuilder extends - AbstractSAMLObjectBuilder { - - - - /** - * Builds the object. - * - * @return the authentication attributes - */ - public final AuthenticationAttributes buildObject() { - return buildObject(AuthenticationAttributes.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace URI - * @param localName the local name - * @param namespacePrefix the namespace prefix - * - * @return the authentication attributes - */ - public final AuthenticationAttributes buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new AuthenticationAttributesImpl(namespaceURI, localName, - namespacePrefix); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java deleted file mode 100644 index e0de20f7d..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opensaml.common.impl.AbstractSignableSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.AuthenticationAttributes; -import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class AuthenticationAttributesImpl. - * - * @author fjquevedo - */ -public final class AuthenticationAttributesImpl extends AbstractSignableSAMLObject implements -AuthenticationAttributes { - - private static final Logger LOGGER = LoggerFactory.getLogger(AuthenticationAttributesImpl.class.getName()); - - /** The indexed children. */ - private VIDPAuthenticationAttributes vIDPAuthenAttr; - - /** - * Instantiates a new authentication attributes implementation. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected AuthenticationAttributesImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - * - */ - public List getOrderedChildren() { - final ArrayList children = new ArrayList(); - - children.add(vIDPAuthenAttr); - - if (getSignature() != null) { - children.add(getSignature()); - } - - return Collections.unmodifiableList(children); - } - - /** - * Gets the signature reference id. - * - * @return the signature reference id - * - */ - public String getSignatureReferenceID() { - return null; - } - - /** - * Gets the vidp authentication attributes. - * - * @return the VIDP authentication attributes - * - */ - public VIDPAuthenticationAttributes getVIDPAuthenticationAttributes() { - return vIDPAuthenAttr; - } - - /** - * Sets the vidp authentication attributes. - * - * @param newVIDPAuthenAttr the new vidp authen attr - * - */ - public void setVIDPAuthenticationAttributes( - final VIDPAuthenticationAttributes newVIDPAuthenAttr) { - vIDPAuthenAttr = prepareForAssignment(this.vIDPAuthenAttr, newVIDPAuthenAttr); - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java deleted file mode 100644 index d31c052fe..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; - -/** - * The Class AuthenticationAttributesMarshaller. - * - * @author fjquevedo - */ -public class AuthenticationAttributesMarshaller extends AbstractSAMLObjectMarshaller { - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java deleted file mode 100644 index 113214712..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.UnmarshallingException; - -import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; - -import eu.stork.peps.auth.engine.core.AuthenticationAttributes; - -/** - * The Class AuthenticationAttributesUnmarshaller. - * - * @author fjquevedo - */ -public class AuthenticationAttributesUnmarshaller extends -AbstractSAMLObjectUnmarshaller { - - /** - * Process child element. - * - * @param parentObject the parent object - * @param childObject the child object - * - * @throws UnmarshallingException the unmarshalling exception - * - */ - protected final void processChildElement(final XMLObject parentObject, - final XMLObject childObject) throws UnmarshallingException { - final AuthenticationAttributes attrStatement = (AuthenticationAttributes) parentObject; - - if (childObject instanceof VIDPAuthenticationAttributes) { - attrStatement.setVIDPAuthenticationAttributes((VIDPAuthenticationAttributes) childObject); - } else { - super.processChildElement(parentObject, childObject); - } - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java deleted file mode 100644 index 64651691f..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.CitizenCountryCode; - -/** - * The Class CitizenCountryCodeBuilder. - * - * @author fjquevedo - */ -public class CitizenCountryCodeBuilder extends AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the citizen country code - */ - public final CitizenCountryCode buildObject() { - return buildObject(CitizenCountryCode.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the citizen country code - */ - public final CitizenCountryCode buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new CitizenCountryCodeImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java deleted file mode 100644 index 374398cf1..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.CitizenCountryCode; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class CitizenCountryCodeImpl. - * - * @author fjquevedo - */ -public class CitizenCountryCodeImpl extends AbstractSAMLObject implements CitizenCountryCode { - - private static final Logger LOGGER = LoggerFactory.getLogger(CitizenCountryCodeImpl.class.getName()); - /** The citizen country code. */ - private String citizenCountryCode; - - /** - * Instantiates a new sP country impl. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected CitizenCountryCodeImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the citizen country code. - * - * @return the citizen country code - */ - public final String getCitizenCountryCode() { - return citizenCountryCode; - } - - /** - * Sets the citizen country code. - * - * @param newCitizenCountryCode the new citizen country code - */ - public final void setCitizenCountryCode(final String newCitizenCountryCode) { - this.citizenCountryCode = prepareForAssignment(this.citizenCountryCode, newCitizenCountryCode); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java deleted file mode 100644 index decae04c5..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.CitizenCountryCode; - -/** - * The Class SPCountryMarshaller. - * - * @author fjquevedo - */ -public class CitizenCountryCodeMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final CitizenCountryCode citizenCountryCode = (CitizenCountryCode) samlObject; - XMLHelper.appendTextContent(domElement, citizenCountryCode.getCitizenCountryCode()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java deleted file mode 100644 index 93132b508..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.CitizenCountryCode; - -/** - * The Class CitizenCountryCodeUnmarshaller. - * - * @author fjquevedo - */ -public class CitizenCountryCodeUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final CitizenCountryCode citizenCountryCode = (CitizenCountryCode) samlObject; - citizenCountryCode.setCitizenCountryCode(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java deleted file mode 100644 index 48da2a24b..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java +++ /dev/null @@ -1,26 +0,0 @@ -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; -import org.opensaml.common.xml.SAMLConstants; -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; - -public class CustomAttributeQueryBuilder extends AbstractSAMLObjectBuilder { - /** - * Constructor. - */ - public CustomAttributeQueryBuilder() { - - } - - /** {@inheritDoc} */ - public CustomAttributeQuery buildObject() { - return buildObject(SAMLConstants.SAML20P_NS, CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME, - SAMLConstants.SAML20P_PREFIX); - } - - /** {@inheritDoc} */ - public CustomAttributeQuery buildObject(String namespaceURI, String localName, String namespacePrefix) { - return new CustomAttributeQueryImpl(namespaceURI, localName, namespacePrefix); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java deleted file mode 100644 index cbf9221eb..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java +++ /dev/null @@ -1,65 +0,0 @@ -package eu.stork.peps.auth.engine.core.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opensaml.saml2.core.Attribute; -import org.opensaml.saml2.core.impl.SubjectQueryImpl; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.util.XMLObjectChildrenList; - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; - - -public class CustomAttributeQueryImpl extends SubjectQueryImpl implements CustomAttributeQuery { - /** Attribute child elements. */ - private final XMLObjectChildrenList attributes; - private String serviceURL; - - /** - * Constructor. - * - * @param namespaceURI the namespace the element is in - * @param elementLocalName the local name of the XML element this Object represents - * @param namespacePrefix the prefix for the given namespace - */ - protected CustomAttributeQueryImpl(String namespaceURI, String elementLocalName, String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - attributes = new XMLObjectChildrenList(this); - } - - /** {@inheritDoc} */ - public List getAttributes() { - return attributes; - } - - /** {@inheritDoc} */ - public List getOrderedChildren() { - ArrayList children = new ArrayList(); - - if (super.getOrderedChildren() != null) { - children.addAll(super.getOrderedChildren()); - } - children.addAll(attributes); - - if (children.size() == 0) { - return null; - } - - return Collections.unmodifiableList(children); - } - - @Override - public String getAssertionConsumerServiceURL() { - // TODO Auto-generated method stub - return this.serviceURL; - } - - @Override - public void setAssertionConsumerServiceURL(String newServiceUrl) { - // TODO Auto-generated method stub - this.serviceURL = newServiceUrl; - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java deleted file mode 100644 index 7f2013ca8..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java +++ /dev/null @@ -1,50 +0,0 @@ -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.Configuration; -import org.opensaml.saml2.core.RequestAbstractType; -import org.opensaml.saml2.core.impl.SubjectQueryMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.CustomRequestAbstractType; - -public class CustomAttributeQueryMarshaller extends SubjectQueryMarshaller { - - /** {@inheritDoc} */ - protected void marshallAttributes(XMLObject samlObject, Element domElement) throws MarshallingException { - CustomRequestAbstractType req = (CustomRequestAbstractType) samlObject; - - if (req.getVersion() != null) { - domElement.setAttributeNS(null, RequestAbstractType.VERSION_ATTRIB_NAME, req.getVersion().toString()); - } - - if (req.getID() != null) { - domElement.setAttributeNS(null, RequestAbstractType.ID_ATTRIB_NAME, req.getID()); - domElement.setIdAttributeNS(null, RequestAbstractType.ID_ATTRIB_NAME, true); - } - - if (req.getVersion() != null) { - domElement.setAttributeNS(null, RequestAbstractType.VERSION_ATTRIB_NAME, req.getVersion().toString()); - } - - if (req.getIssueInstant() != null) { - String iiStr = Configuration.getSAMLDateFormatter().print(req.getIssueInstant()); - domElement.setAttributeNS(null, RequestAbstractType.ISSUE_INSTANT_ATTRIB_NAME, iiStr); - } - - if (req.getDestination() != null) { - domElement.setAttributeNS(null, RequestAbstractType.DESTINATION_ATTRIB_NAME, req.getDestination()); - } - - if (req.getAssertionConsumerServiceURL() != null) { - domElement.setAttributeNS(null, CustomRequestAbstractType.ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME, req.getAssertionConsumerServiceURL()); - } - - if (req.getConsent() != null) { - domElement.setAttributeNS(null, RequestAbstractType.CONSENT_ATTRIB_NAME, req.getConsent()); - } - } - - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java deleted file mode 100644 index e351b65b0..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java +++ /dev/null @@ -1,114 +0,0 @@ -package eu.stork.peps.auth.engine.core.impl; - -import org.joda.time.DateTime; -import org.joda.time.chrono.ISOChronology; -import org.opensaml.common.SAMLVersion; -import org.opensaml.common.xml.SAMLConstants; -import org.opensaml.saml2.core.Attribute; -import org.opensaml.saml2.core.RequestAbstractType; -import org.opensaml.saml2.core.impl.SubjectQueryUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.AbstractXMLObjectUnmarshaller; -import org.opensaml.xml.io.UnmarshallingException; -import org.opensaml.xml.util.DatatypeHelper; -import org.opensaml.xml.util.XMLHelper; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Attr; -import org.w3c.dom.Element; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Node; -import org.w3c.dom.Text; - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.CustomRequestAbstractType; - -public class CustomAttributeQueryUnmarshaller extends SubjectQueryUnmarshaller { - - private final Logger log = LoggerFactory.getLogger(AbstractXMLObjectUnmarshaller.class); - /** {@inheritDoc} */ - protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) - throws UnmarshallingException { - CustomAttributeQuery query = (CustomAttributeQuery) parentSAMLObject; - - if (childSAMLObject instanceof Attribute) { - query.getAttributes().add((Attribute) childSAMLObject); - } else { - super.processChildElement(parentSAMLObject, childSAMLObject); - } - } - - /** {@inheritDoc} */ - public XMLObject unmarshall(Element domElement) throws UnmarshallingException { - if (log.isTraceEnabled()) { - log.trace("Starting to unmarshall DOM element {}", XMLHelper.getNodeQName(domElement)); - } - - checkElementIsTarget(domElement); - - //String namespaceURI, String elementLocalName, String namespacePrefix - XMLObject xmlObject = new CustomAttributeQueryImpl(SAMLConstants.SAML20P_NS, CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME, - SAMLConstants.SAML20P_PREFIX); - - if (log.isTraceEnabled()) { - log.trace("Unmarshalling attributes of DOM Element {}", XMLHelper.getNodeQName(domElement)); - } - - NamedNodeMap attributes = domElement.getAttributes(); - Node attribute; - for (int i = 0; i < attributes.getLength(); i++) { - attribute = attributes.item(i); - - // These should allows be attribute nodes, but just in case... - if (attribute.getNodeType() == Node.ATTRIBUTE_NODE) { - unmarshallAttribute(xmlObject, (Attr) attribute); - } - } - - if (log.isTraceEnabled()) { - log.trace("Unmarshalling other child nodes of DOM Element {}", XMLHelper.getNodeQName(domElement)); - } - - Node childNode = domElement.getFirstChild(); - while (childNode != null) { - - if (childNode.getNodeType() == Node.ATTRIBUTE_NODE) { - unmarshallAttribute(xmlObject, (Attr) childNode); - } else if (childNode.getNodeType() == Node.ELEMENT_NODE) { - unmarshallChildElement(xmlObject, (Element) childNode); - } else if (childNode.getNodeType() == Node.TEXT_NODE - || childNode.getNodeType() == Node.CDATA_SECTION_NODE) { - unmarshallTextContent(xmlObject, (Text) childNode); - } - - childNode = childNode.getNextSibling(); - } - - xmlObject.setDOM(domElement); - return xmlObject; - } - - /** {@inheritDoc} */ - protected void processAttribute(XMLObject samlObject, Attr attribute) throws UnmarshallingException { - CustomRequestAbstractType req = (CustomRequestAbstractType) samlObject; - - if (attribute.getLocalName().equals(RequestAbstractType.VERSION_ATTRIB_NAME)) { - req.setVersion(SAMLVersion.valueOf(attribute.getValue())); - } else if (attribute.getLocalName().equals(RequestAbstractType.ID_ATTRIB_NAME)) { - req.setID(attribute.getValue()); - attribute.getOwnerElement().setIdAttributeNode(attribute, true); - } else if (attribute.getLocalName().equals(RequestAbstractType.ISSUE_INSTANT_ATTRIB_NAME) - && !DatatypeHelper.isEmpty(attribute.getValue())) { - req.setIssueInstant(new DateTime(attribute.getValue(), ISOChronology.getInstanceUTC())); - } else if (attribute.getLocalName().equals(RequestAbstractType.DESTINATION_ATTRIB_NAME)) { - req.setDestination(attribute.getValue()); - } else if (attribute.getLocalName().equals(RequestAbstractType.CONSENT_ATTRIB_NAME)) { - req.setConsent(attribute.getValue()); - } else if (attribute.getLocalName().equals(CustomRequestAbstractType.ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME)) { - req.setAssertionConsumerServiceURL(attribute.getValue()); - }else { - super.processAttribute(samlObject, attribute); - } - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java deleted file mode 100644 index 3f4fc633d..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; - -/** - * The Class EIDCrossBorderShareBuilder. - * - * @author fjquevedo - */ -public class EIDCrossBorderShareBuilder extends AbstractSAMLObjectBuilder { - - - /** - * Builds the object. - * - * @return the identifier cross border share - */ - public final EIDCrossBorderShare buildObject() { - return buildObject(EIDCrossBorderShare.DEF_ELEMENT_NAME); - } - - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the eID cross border share - */ - public final EIDCrossBorderShare buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new EIDCrossBorderShareImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java deleted file mode 100644 index 3827f5085..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class EIDCrossBorderShareImpl. - * - * @author fjquevedo - */ -public class EIDCrossBorderShareImpl extends AbstractSAMLObject implements - EIDCrossBorderShare { - - private static final Logger LOGGER = LoggerFactory.getLogger(EIDCrossBorderShareImpl.class.getName()); - /** The citizen country code. */ - private String eIDCrossBorderShare; - - /** - * Instantiates a new eID cross border share implementation. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected EIDCrossBorderShareImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - - - /** - * Gets the eID cross border share. - * - * @return the eID cross border share - */ - public final String getEIDCrossBorderShare() { - return eIDCrossBorderShare; - } - - - /** - * Sets the eID cross border share. - * - * @param newEIDCrossBorderShare the new eID cross border share - */ - public final void setEIDCrossBorderShare(String newEIDCrossBorderShare) { - this.eIDCrossBorderShare = prepareForAssignment(this.eIDCrossBorderShare, newEIDCrossBorderShare); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - * {@inheritDoc} - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java deleted file mode 100644 index c5e113013..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; - - -/** - * The Class EIDCrossBorderShareMarshaller. - * - * @author fjquevedo - */ -public class EIDCrossBorderShareMarshaller extends AbstractSAMLObjectMarshaller { - - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) samlObject; - XMLHelper.appendTextContent(domElement, crossBorderShare.getEIDCrossBorderShare()); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java deleted file mode 100644 index e74bee6ca..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; - -/** - * The Class EIDCrossBorderShareUnmarshaller. - * - * @author fjquevedo - */ -public class EIDCrossBorderShareUnmarshaller extends - AbstractSAMLObjectUnmarshaller { - - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) samlObject; - crossBorderShare.setEIDCrossBorderShare(elementContent); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java deleted file mode 100644 index 5e91e18fd..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; - -/** - * The Class EIDCrossSectorShareBuilder. - * - * @author fjquevedo - */ -public class EIDCrossSectorShareBuilder extends - AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the eID cross sector share - */ - public final EIDCrossSectorShare buildObject() { - return buildObject(EIDCrossSectorShare.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the eID cross sector share implementation - */ - public final EIDCrossSectorShareImpl buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new EIDCrossSectorShareImpl(namespaceURI, localName, - namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java deleted file mode 100644 index 7b2ad3dbd..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; - -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * The Class EIDCrossSectorShareImpl. - * - * @author fjquevedo - */ -public class EIDCrossSectorShareImpl extends AbstractSAMLObject implements - EIDCrossSectorShare { - - private static final Logger LOGGER = LoggerFactory.getLogger(EIDCrossSectorShareImpl.class.getName()); - /** The citizen country code. */ - private String eIDCrossSectorShare; - - - /** - * Instantiates a new eID cross sector share implementation. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected EIDCrossSectorShareImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - - - /** - * Gets the eID cross sector share. - * - * @return the eID cross sector share - */ - public final String getEIDCrossSectorShare() { - return eIDCrossSectorShare; - } - - - /** - * Sets the eID cross sector share. - * - * @param newEIDCrossSectorShare the new eID cross sector share - */ - public final void setEIDCrossSectorShare(String newEIDCrossSectorShare) { - this.eIDCrossSectorShare = prepareForAssignment(this.eIDCrossSectorShare, newEIDCrossSectorShare); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java deleted file mode 100644 index 3ee9df698..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; - - -/** - * The Class EIDCrossSectorShareMarshaller. - * - * @author fjquevedo - */ -public class EIDCrossSectorShareMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) samlObject; - XMLHelper.appendTextContent(domElement, crossSectorShare.getEIDCrossSectorShare()); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java deleted file mode 100644 index 94c7689be..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; - -/** - * The Class EIDCrossSectorShareUnmarshaller. - * - * @author fjquevedo - */ -public class EIDCrossSectorShareUnmarshaller extends - AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void processElementContent(final XMLObject samlObject, - final String domElement) { - - final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) samlObject; - crossSectorShare.setEIDCrossSectorShare(domElement); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java deleted file mode 100644 index 230ff3ca4..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.EIDSectorShare; - -/** - * The Class EIDSectorShareBuilder. - * - * @author fjquevedo - */ -public class EIDSectorShareBuilder extends - AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the eID sector share - */ - public final EIDSectorShare buildObject() { - return buildObject(EIDSectorShare.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the eID sector share - */ - public final EIDSectorShare buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new EIDSectorShareImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java deleted file mode 100644 index 9ed726a32..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.EIDSectorShare; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -// TODO: Auto-generated Javadoc -/** - * The Class EIDSectorShareImpl. - * - * @author fjquevedo - */ -public class EIDSectorShareImpl extends AbstractSAMLObject implements - EIDSectorShare { - - private static final Logger LOGGER = LoggerFactory.getLogger(EIDSectorShareImpl.class.getName()); - - /** The e id sector share. */ - private String eIDSectorShare; - /** - * Instantiates a new eID sector share implementation. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected EIDSectorShareImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - - /** - * Gets the eID sector share. - * - * @return the eID sector share - */ - public final String getEIDSectorShare() { - return eIDSectorShare; - } - - /** - * Sets the eID sector share. - * - * @param newEIDSectorShare the new eID sector share - */ - public final void setEIDSectorShare(String newEIDSectorShare) { - this.eIDSectorShare = prepareForAssignment(this.eIDSectorShare, newEIDSectorShare); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java deleted file mode 100644 index 0ce449cd1..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.saml2.core.impl.AbstractNameIDTypeMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.EIDSectorShare; - -/** - * The Class EIDSectorShareMarshaller. - * - * @author fjquevedo - */ -public class EIDSectorShareMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final EIDSectorShare sectorShare = (EIDSectorShare) samlObject; - XMLHelper.appendTextContent(domElement, sectorShare.getEIDSectorShare()); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java deleted file mode 100644 index f7f00adb9..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.EIDSectorShare; - - -/** - * The Class EIDSectorShareUnmarshaller. - * - * @author fjquevedo - */ -public class EIDSectorShareUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void processElementContent(final XMLObject samlObject, - final String domElement) { - final EIDSectorShare sectorShare = (EIDSectorShare) samlObject; - sectorShare.setEIDSectorShare(domElement); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java deleted file mode 100644 index 41676931b..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.QAAAttribute; - -/** - * The Class QAAAttributeBuilder. - * - * @author fjquevedo - */ -public class QAAAttributeBuilder extends - AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the quality authentication assurance object - */ - public final QAAAttribute buildObject() { - return buildObject(QAAAttribute.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the quality authentication assurance object - - */ - public final QAAAttribute buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new QAAAttributeImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java deleted file mode 100644 index 46f3bb402..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.QAAAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class QAAAttributeImpl. - * - * @author fjquevedo - */ -public class QAAAttributeImpl extends AbstractSAMLObject implements - QAAAttribute { - - private static final Logger LOGGER = LoggerFactory.getLogger(QAAAttributeImpl.class.getName()); - /** The quality authentication assurance level. */ - private String qaaLevel; - - /** - * Constructor. - * - * @param namespaceURI the namespace the element is in - * @param elementLocalName the local name of the XML element this Object - * represents - * @param namespacePrefix the prefix for the given namespace - */ - protected QAAAttributeImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the quality authentication assurance level. - * - * @return the quality authentication assurance level - */ - public final String getQaaLevel() { - return qaaLevel; - } - - /** - * Sets the quality authentication assurance level. - * - * @param newQaaLevel the new quality authentication assurance level - */ - public final void setQaaLevel(final String newQaaLevel) { - this.qaaLevel = prepareForAssignment(this.qaaLevel, newQaaLevel); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java deleted file mode 100644 index 000879368..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.QAAAttribute; - -/** - * The Class QAAAttributeMarshaller. - * - * @author fjquevedo - */ -public class QAAAttributeMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final QAAAttribute qaaAttribute = (QAAAttribute) samlObject; - XMLHelper.appendTextContent(domElement, qaaAttribute.getQaaLevel()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java deleted file mode 100644 index 8445e4eeb..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.QAAAttribute; - -/** - * The Class QAAAttributeUnmarshaller. - * - * @author fjquevedo - */ -public class QAAAttributeUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final QAAAttribute qaaLevel = (QAAAttribute) samlObject; - qaaLevel.setQaaLevel(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java deleted file mode 100644 index c9881c439..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.RequestedAttribute; - -/** - * The Class RequestedAttributeBuilder. - * - * @author fjquevedo - */ -public class RequestedAttributeBuilder extends - AbstractSAMLObjectBuilder { - - - /** - * Builds the object. - * - * @return the requested attribute - */ - public final RequestedAttribute buildObject() { - return buildObject(RequestedAttribute.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the requested attribute - */ - public final RequestedAttribute buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new RequestedAttributeImpl(namespaceURI, localName, - namespacePrefix); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java deleted file mode 100644 index ac2e8a3ee..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java +++ /dev/null @@ -1,220 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.schema.XSBooleanValue; -import org.opensaml.xml.util.AttributeMap; -import org.opensaml.xml.util.XMLObjectChildrenList; - -import eu.stork.peps.auth.engine.core.RequestedAttribute; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -// TODO: Auto-generated Javadoc -/** - * The Class RequestedAttributeImpl. - * - * @author fjquevedo - */ -public class RequestedAttributeImpl extends AbstractSAMLObject implements - RequestedAttribute { - - private static final Logger LOGGER = LoggerFactory.getLogger(RequestedAttributeImpl.class.getName()); - /** - * The attribute values. - */ - private final XMLObjectChildrenList attributeValues; - - /** - * The friendly name. - * - */ - private String friendlyName; - - /** - * The is required. - */ - private String isRequired; - - /** - * The name. - * - */ - private String name; - - /** - * The name format. - * - */ - private String nameFormat; - - /** - * The unknown attributes. - * - */ - private AttributeMap unknownAttributes; - - /** - * Instantiates a new requested attribute impl. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected RequestedAttributeImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - unknownAttributes = new AttributeMap(this); - attributeValues = new XMLObjectChildrenList(this); - } - - - /** - * Gets the attribute values. - * - * @return the attribute values - */ - public final List getAttributeValues() { - return attributeValues; - } - - /** - * Gets the friendly name. - * - * @return the friendly name. - */ - public final String getFriendlyName() { - return friendlyName; - } - - - /** - * Gets the checks if is required. - * - * @return the boolean if it's required. - */ - public final String isRequired() { - return isRequired; - } - - - /** - * Gets the is required xs boolean. - * - * @return the XSBoolean if it's required. - */ - public final String getIsRequiredXSBoolean() { - return isRequired; - } - - - /** - * Gets the name. - * - * @return the name - */ - public final String getName() { - return name; - } - - - /** - * Gets the name format. - * - * @return the name format. - */ - public final String getNameFormat() { - return nameFormat; - } - - /** - * Gets the ordered children. - * - * @return the list of XMLObject. - */ - public final List getOrderedChildren() { - final ArrayList children = new ArrayList(); - children.addAll(attributeValues); - return Collections.unmodifiableList(children); - } - - /** - * Gets the unknown attributes. - * - * @return the attribute map - */ - public final AttributeMap getUnknownAttributes() { - return unknownAttributes; - } - - /** - * Sets the friendly name. - * - * @param newFriendlyName the new friendly name format - */ - public final void setFriendlyName(final String newFriendlyName) { - this.friendlyName = prepareForAssignment(this.friendlyName, - newFriendlyName); - } - - /** - * Set new boolean value isRequired. - * @param newIsRequired then new value - */ - public final void setIsRequired(final String newIsRequired) { - isRequired = prepareForAssignment(this.isRequired, newIsRequired); - - } - - /** - * Sets the name. - * - * @param newName the new name - */ - public final void setName(final String newName) { - this.name = prepareForAssignment(this.name, newName); - } - - /** - * Sets the name format. - * - * @param newNameFormat the new name format - */ - public final void setNameFormat(final String newNameFormat) { - this.nameFormat = prepareForAssignment(this.nameFormat, newNameFormat); - } - - /** - * Sets the unknown attributes. - * - * @param newUnknownAttr the new unknown attributes - */ - public final void setUnknownAttributes(final AttributeMap newUnknownAttr) { - this.unknownAttributes = newUnknownAttr; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java deleted file mode 100644 index 1a14a118a..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.Map.Entry; - -import javax.xml.namespace.QName; - -import org.opensaml.Configuration; -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Attr; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.RequestedAttribute; - -/** - * The Class RequestedAttributeMarshaller. - * - * @author fjquevedo - */ -public class RequestedAttributeMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall attributes. - * - * @param samlElement the SAML element - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallAttributes(final XMLObject samlElement, - final Element domElement) throws MarshallingException { - final RequestedAttribute requestedAttr = (RequestedAttribute) samlElement; - - if (requestedAttr.getName() != null) { - domElement.setAttributeNS(null, - RequestedAttribute.NAME_ATTRIB_NAME, requestedAttr - .getName()); - } - - if (requestedAttr.getNameFormat() != null) { - domElement.setAttributeNS(null, - RequestedAttribute.NAME_FORMAT_ATTR, requestedAttr - .getNameFormat()); - } - - if (requestedAttr.getFriendlyName() != null) { - domElement.setAttributeNS(null, - RequestedAttribute.FRIENDLY_NAME_ATT, requestedAttr - .getFriendlyName()); - } - - if (requestedAttr.getIsRequiredXSBoolean() != null) { - domElement.setAttributeNS(null, - RequestedAttribute.IS_REQUIRED_ATTR, requestedAttr - .getIsRequiredXSBoolean().toString()); - } - - Attr attr; - for (Entry entry : requestedAttr.getUnknownAttributes() - .entrySet()) { - attr = XMLHelper.constructAttribute(domElement.getOwnerDocument(), - entry.getKey()); - attr.setValue(entry.getValue()); - domElement.setAttributeNodeNS(attr); - if (Configuration.isIDAttribute(entry.getKey()) - || requestedAttr.getUnknownAttributes().isIDAttribute( - entry.getKey())) { - attr.getOwnerElement().setIdAttributeNode(attr, true); - } - } - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java deleted file mode 100644 index c07f852d9..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import javax.xml.namespace.QName; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; - -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.UnmarshallingException; -import org.opensaml.xml.schema.XSBooleanValue; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Attr; - -import eu.stork.peps.auth.engine.core.RequestedAttribute; -import eu.stork.peps.auth.engine.core.SAMLCore; - -/** - * The Class RequestedAttributeUnmarshaller. - * - * @author fjquevedo - */ -public class RequestedAttributeUnmarshaller extends - AbstractSAMLObjectUnmarshaller { - - /** - * Process child element. - * - * @param parentSAMLObject parent SAMLObject - * @param childSAMLObject child SAMLObject - * - * @throws UnmarshallingException error at unmarshall XML object - */ - protected final void processChildElement(final XMLObject parentSAMLObject, - final XMLObject childSAMLObject) throws UnmarshallingException { - - final RequestedAttribute requestedAttr = (RequestedAttribute) parentSAMLObject; - - final QName childQName = childSAMLObject.getElementQName(); - if (childQName.getLocalPart().equals("AttributeValue") - && childQName.getNamespaceURI().equals(SAMLCore.STORK10_NS.getValue())) { - requestedAttr.getAttributeValues().add(childSAMLObject); - } else { - super.processChildElement(parentSAMLObject, childSAMLObject); - } - } - - /** - * Process attribute. - * - * @param samlObject the SAML object - * @param attribute the attribute - * @throws UnmarshallingException the unmarshalling exception - */ - protected final void processAttribute(final XMLObject samlObject, - final Attr attribute) throws UnmarshallingException { - - final RequestedAttribute requestedAttr = (RequestedAttribute) samlObject; - - if (attribute.getLocalName() - .equals(RequestedAttribute.NAME_ATTRIB_NAME)) { - requestedAttr.setName(attribute.getValue()); - } else if (attribute.getLocalName().equals( - RequestedAttribute.NAME_FORMAT_ATTR)) { - requestedAttr.setNameFormat(attribute.getValue()); - } else if (attribute.getLocalName().equals( - RequestedAttribute.FRIENDLY_NAME_ATT)) { - requestedAttr.setFriendlyName(attribute.getValue()); - } else if (attribute.getLocalName().equals( - RequestedAttribute.IS_REQUIRED_ATTR)) { - requestedAttr.setIsRequired(attribute - .getValue()); - - } else { - final QName attribQName = XMLHelper.getNodeQName(attribute); - if (attribute.isId()) { - requestedAttr.getUnknownAttributes().registerID(attribQName); - } - requestedAttr.getUnknownAttributes().put(attribQName, - attribute.getValue()); - } - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java deleted file mode 100644 index d421c53d2..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.RequestedAttributes; - -/** - * The Class RequestedAttributesBuilder. - * - * @author fjquevedo - */ -public class RequestedAttributesBuilder extends - AbstractSAMLObjectBuilder { - - - /** - * Builds the object. - * - * @return the requested attributes - */ - public final RequestedAttributes buildObject() { - return buildObject(RequestedAttributes.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the requested attributes - */ - public final RequestedAttributes buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new RequestedAttributesImpl(namespaceURI, localName, - namespacePrefix); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java deleted file mode 100644 index 0a5b37add..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.util.IndexedXMLObjectChildrenList; - -import eu.stork.peps.auth.engine.core.RequestedAttribute; -import eu.stork.peps.auth.engine.core.RequestedAttributes; - -/** - * The Class RequestedAttributesImpl. - * - * @author fjquevedo - */ -public class RequestedAttributesImpl extends AbstractSAMLObject implements - RequestedAttributes { - - /** - * Instantiates a new requested attributes implement. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected RequestedAttributesImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - indexedChildren = new IndexedXMLObjectChildrenList(this); - } - - /** The indexed children. */ - private final IndexedXMLObjectChildrenList indexedChildren; - - /** - * Gets the indexed children. - * - * @return the indexed children - */ - public final IndexedXMLObjectChildrenList getIndexedChildren() { - return indexedChildren; - } - - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - - final ArrayList children = new ArrayList(); - - children.addAll(indexedChildren); - - return Collections.unmodifiableList(children); - - } - - /** - * Gets the attributes. - * - * @return the attributes - * - * @see eu.stork.peps.auth.engine.core.RequestedAttributes#getAttributes() - */ - @SuppressWarnings("unchecked") - public final List getAttributes() { - return (List) indexedChildren - .subList(RequestedAttribute.DEF_ELEMENT_NAME); - } - - @Override - public int hashCode() { - throw new UnsupportedOperationException("hashCode method not implemented"); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java deleted file mode 100644 index dfc42adf3..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; - -/** - * The Class RequestedAttributesMarshaller. - * - * @author fjquevedo - */ -public class RequestedAttributesMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Instantiates a new requested attributes marshaller. - */ - public RequestedAttributesMarshaller() { - super(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java deleted file mode 100644 index 41b3afa40..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.UnmarshallingException; - -import eu.stork.peps.auth.engine.core.RequestedAttribute; -import eu.stork.peps.auth.engine.core.RequestedAttributes; - -/** - * The Class RequestedAttributesUnmarshaller. - * - * @author fjquevedo - */ -public class RequestedAttributesUnmarshaller extends - AbstractSAMLObjectUnmarshaller { - - /** - * Process child element. - * - * @param parentObject the parent object - * @param childObject the child object - * - * @throws UnmarshallingException error in unmarshall - */ - protected final void processChildElement(final XMLObject parentObject, - final XMLObject childObject) throws UnmarshallingException { - final RequestedAttributes attrStatement = (RequestedAttributes) parentObject; - - if (childObject instanceof RequestedAttribute) { - attrStatement.getAttributes().add((RequestedAttribute) childObject); - } else { - super.processChildElement(parentObject, childObject); - } - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java deleted file mode 100644 index a35c77936..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SPApplication; - -/** - * The Class SPApplicationBuilder. - * - * @author fjquevedo - */ -public class SPApplicationBuilder extends - AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the service provider application - */ - public final SPApplication buildObject() { - return buildObject(SPApplication.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the service provider application - */ - public final SPApplication buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new SPApplicationImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java deleted file mode 100644 index 0a428a521..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPApplication; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class SPApplicationImpl. - * - * @author fjquevedo - */ -public class SPApplicationImpl extends AbstractSAMLObject implements - SPApplication { - - private static final Logger LOGGER = LoggerFactory.getLogger(SPApplicationImpl.class.getName()); - /** The service provider application. */ - private String spApplication; - - /** - * Instantiates a new service provider application. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected SPApplicationImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the service provider application. - * - * @return the service provider application - */ - public final String getSPApplication() { - return spApplication; - } - - /** - * Sets the service provider application. - * - * @param newSpApplication the new service provider application - */ - public final void setSPApplication(final String newSpApplication) { - this.spApplication = prepareForAssignment(this.spApplication, - newSpApplication); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java deleted file mode 100644 index 4866c3535..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.SPApplication; - -/** - * The Class SPApplicationMarshaller. - * - * @author fjquevedo - */ -public class SPApplicationMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final SPApplication spApplication = (SPApplication) samlObject; - XMLHelper.appendTextContent(domElement, spApplication - .getSPApplication()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java deleted file mode 100644 index a28432a13..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPApplication; - - -/** - * The Class SPApplicationUnmarshaller. - * - * @author fjquevedo - */ -public class SPApplicationUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final SPApplication spApplication = (SPApplication) samlObject; - spApplication.setSPApplication(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java deleted file mode 100644 index 48ec92f49..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SPCountry; - -/** - * The Class SPCountryBuilder. - * - * @author fjquevedo - */ -public class SPCountryBuilder extends AbstractSAMLObjectBuilder { - - - /** - * Builds the object SPCountry. - * - * @return the service provider country - */ - public final SPCountry buildObject() { - return buildObject(SPCountry.DEF_ELEMENT_NAME); - } - - - /** - * Builds the object SPCountry. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the service provider country - */ - public final SPCountry buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new SPCountryImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java deleted file mode 100644 index 40a1ac86a..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPCountry; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class SPCountryImpl. - * - * @author fjquevedo - */ -public class SPCountryImpl extends AbstractSAMLObject implements SPCountry { - - private static final Logger LOGGER = LoggerFactory.getLogger(SPCountryImpl.class.getName()); - /** The service provider country. */ - private String spCountry; - - /** - * Instantiates a new service provider country. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected SPCountryImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the service provider country. - * - * @return the service provider country - */ - public final String getSPCountry() { - return spCountry; - } - - /** - * Sets the service provider country. - * - * @param newSpCountry the new service provider country - */ - public final void setSPCountry(final String newSpCountry) { - this.spCountry = prepareForAssignment(this.spCountry, newSpCountry); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java deleted file mode 100644 index e82634749..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.SPCountry; - -/** - * The Class SPCountryMarshaller. - * - * @author fjquevedo - */ -public class SPCountryMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final SPCountry spCountry = (SPCountry) samlObject; - XMLHelper.appendTextContent(domElement, spCountry.getSPCountry()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java deleted file mode 100644 index deb695ac6..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPCountry; - - -/** - * The Class SPCountryUnmarshaller. - * - * @author fjquevedo - */ -public class SPCountryUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final SPCountry spCountry = (SPCountry) samlObject; - spCountry.setSPCountry(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java deleted file mode 100644 index b3640947b..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SPID; - -/** - * The Class SPIDBuilder. - * - * @author iinigo - */ -public class SPIDBuilder extends AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the SP ID - */ - public final SPID buildObject() { - return buildObject(SPID.DEF_ELEMENT_NAME); - } - - /** - * Builds the object. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the citizen country code - */ - public final SPID buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new SPIDImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java deleted file mode 100644 index 68611997b..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPID; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class SPIDImpl. - * - * @author iinigo - */ -public class SPIDImpl extends AbstractSAMLObject implements SPID { - - private static final Logger LOGGER = LoggerFactory.getLogger(SPIDImpl.class.getName()); - /** The citizen country code. */ - private String spId; - - /** - * Instantiates a new sP country impl. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected SPIDImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the SP ID. - * - * @return the SP ID - */ - public final String getSPID() { - return spId; - } - - /** - * Sets the SP ID. - * - * @param newSPID the new SP ID - */ - public final void setSPID(final String newSPID) { - this.spId = prepareForAssignment(this.spId, newSPID); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java deleted file mode 100644 index 24389522e..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.SPID; - -/** - * The Class SPIDMarshaller. - * - * @author iinigo - */ -public class SPIDMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final SPID spid = (SPID) samlObject; - XMLHelper.appendTextContent(domElement, spid.getSPID()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java deleted file mode 100644 index e4d230b94..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPID; - -/** - * The Class SPIDUnmarshaller. - * - * @author iinigo - */ -public class SPIDUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final SPID spid = (SPID) samlObject; - spid.setSPID(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java deleted file mode 100644 index a6e1fe686..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SAMLCore; -import eu.stork.peps.auth.engine.core.SPInformation; - -/** - * The Class SPInformation. - * - * @author iinigo - */ -public final class SPInformationBuilder extends AbstractSAMLObjectBuilder { - - - /** {@inheritDoc} */ - public SPInformation buildObject() { - return buildObject(SAMLCore.STORK10P_NS.getValue(), SPInformation.DEF_LOCAL_NAME, SAMLCore.STORK10P_PREFIX.getValue()); - } - - /** {@inheritDoc} */ - public SPInformation buildObject(final String namespaceURI, final String localName, final String namespacePrefix) { - return new SPInformationImpl(namespaceURI, localName, namespacePrefix); - } - -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java deleted file mode 100644 index ff6e90999..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opensaml.common.impl.AbstractSignableSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPID; -import eu.stork.peps.auth.engine.core.SPInformation; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * The Class SPInformationImpl. - * - * @author iinigo - */ -public final class SPInformationImpl extends AbstractSignableSAMLObject implements -SPInformation { - - private static final Logger LOGGER = LoggerFactory.getLogger(SPInformationImpl.class.getName()); - /** The citizen country code. */ - private SPID spId; - - - /** - * Instantiates a new requested attributes implement. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected SPInformationImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - - /** - * getSPId. - * - * @return the SP ID - */ - public SPID getSPID() { - return spId; - } - - /** - * Gets the ordered children. - * - * @return the ordered children - * - */ - public List getOrderedChildren() { - final ArrayList children = new ArrayList(); - - children.add(spId); - - if (getSignature() != null) { - children.add(getSignature()); - } - - return Collections.unmodifiableList(children); - - } - - /** - * Gets the signature reference id. - * - * @return the signature reference id - * - */ - public String getSignatureReferenceID() { - return null; - } - - /** - * Sets the SP Id. - * - * @param newSPId the new SP Id - * - */ - public void setSPID(SPID newSPId) { - this.spId = prepareForAssignment(this.spId, newSPId); - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java deleted file mode 100644 index 44845948c..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; - -/** - * The Class SPInformationMarshaller. - * - * @author iinigo - */ -public class SPInformationMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Instantiates a new SP Information marshaller. - */ - public SPInformationMarshaller() { - super(); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java deleted file mode 100644 index 414b93386..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.UnmarshallingException; - -import eu.stork.peps.auth.engine.core.SPID; -import eu.stork.peps.auth.engine.core.SPInformation; - -/** - * The Class SPInformationUnmarshaller. - * - * @author iinigo - */ -public class SPInformationUnmarshaller extends - AbstractSAMLObjectUnmarshaller { - - /** - * Process child element. - * - * @param parentObject the parent object - * @param childObject the child object - * - * @throws UnmarshallingException the unmarshalling exception - * - */ - protected final void processChildElement(final XMLObject parentObject, - final XMLObject childObject) throws UnmarshallingException { - final SPInformation spInformation = (SPInformation) parentObject; - - if (childObject instanceof SPID) { - spInformation.setSPID((SPID) childObject); - } else { - super.processChildElement(parentObject, childObject); - } - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java deleted file mode 100644 index fe47cf99c..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SPInstitution; - -/** - * The Class SPInstitutionBuilder. - * - * @author fjquevedo - */ -public class SPInstitutionBuilder extends - AbstractSAMLObjectBuilder { - - /** - * Builds the object. - * - * @return the service provider institution - */ - public final SPInstitution buildObject() { - return buildObject(SPInstitution.DEF_ELEMENT_NAME); - } - - /** - * Builds the object SPInstitution. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the service provider institution - */ - public final SPInstitution buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new SPInstitutionImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java deleted file mode 100644 index 38438613a..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPInstitution; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class SPInstitutionImpl. - * - * @author fjquevedo - */ -public class SPInstitutionImpl extends AbstractSAMLObject implements - SPInstitution { - - private static final Logger LOGGER = LoggerFactory.getLogger(SPInstitutionImpl.class.getName()); - /** The service provider institution. */ - private String spInstitution; - - /** - * Instantiates a new service provider institution. - * - * @param namespaceURI the namespace uri - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected SPInstitutionImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - /** - * Gets the service provider institution. - * - * @return the service provider institution - */ - public final String getSPInstitution() { - return spInstitution; - } - - /** - * Sets the service provider institution. - * - * @param newSpInstitution the new service provider institution - */ - public final void setSPInstitution(final String newSpInstitution) { - this.spInstitution = prepareForAssignment(this.spInstitution, - newSpInstitution); - } - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } - } diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java deleted file mode 100644 index 504a1f035..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.SPInstitution; - -/** - * The Class SPInstitutionMarshaller. - * - * @author fjquevedo - */ -public class SPInstitutionMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final SPInstitution spInstitution = (SPInstitution) samlObject; - XMLHelper.appendTextContent(domElement, spInstitution - .getSPInstitution()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java deleted file mode 100644 index 103d5f2b2..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPInstitution; - -/** - * The Class SPInstitutionUnmarshaller. - * - * @author fjquevedo - */ -public class SPInstitutionUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final SPInstitution spInstitution = (SPInstitution) samlObject; - spInstitution.setSPInstitution(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java deleted file mode 100644 index a691b9008..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SPSector; - -/** - * The Class SPSectorBuilder. - * - * @author fjquevedo - */ -public class SPSectorBuilder extends AbstractSAMLObjectBuilder { - - /** - * Builds the object SPSector. - * - * @return the service provider sector. - */ - public final SPSector buildObject() { - return buildObject(SPSector.DEF_ELEMENT_NAME); - } - - /** - * Builds the object SPSector. - * - * @param namespaceURI the namespace uri - * @param localName the local name - * @param namespacePrefix the namespace prefix - * @return the service provider sector - */ - public final SPSector buildObject(final String namespaceURI, - final String localName, final String namespacePrefix) { - return new SPSectorImpl(namespaceURI, localName, namespacePrefix); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java deleted file mode 100644 index 4ac822876..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.List; - -import org.opensaml.common.impl.AbstractSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPSector; - - -/** - * The Class SPSectorImpl. - * - * @author fjquevedo - */ -public class SPSectorImpl extends AbstractSAMLObject implements SPSector { - - /** The service provider sector. */ - private String spSector; - - /** - * Instantiates a new Service provider sector implementation. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected SPSectorImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - - /** - * Gets the service provider sector. - * - * @return the SP sector - * - * @see eu.stork.peps.auth.engine.core.SPSector#getSPSector() - */ - public final String getSPSector() { - return spSector; - } - - - /** - * Sets the service provider sector. - * - * @param newSpSector the new service provider sector - */ - public final void setSPSector(final String newSpSector) { - this.spSector = prepareForAssignment(this.spSector, newSpSector); - } - - - /** - * Gets the ordered children. - * - * @return the ordered children - */ - public final List getOrderedChildren() { - return null; - } - - @Override - public int hashCode() { - throw new UnsupportedOperationException("hashCode method not implemented"); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java deleted file mode 100644 index c5331e8f4..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.util.XMLHelper; -import org.w3c.dom.Element; - -import eu.stork.peps.auth.engine.core.SPSector; - -/** - * The Class SPSectorMarshaller. - * - * @author fjquevedo - */ -public class SPSectorMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Marshall element content. - * - * @param samlObject the SAML object - * @param domElement the DOM element - * @throws MarshallingException the marshalling exception - */ - protected final void marshallElementContent(final XMLObject samlObject, - final Element domElement) throws MarshallingException { - final SPSector spSector = (SPSector) samlObject; - XMLHelper.appendTextContent(domElement, spSector.getSPSector()); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java deleted file mode 100644 index cbb05c6e5..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.SPSector; - -/** - * The Class SPSectorUnmarshaller. - * - * @author fjquevedo - */ -public class SPSectorUnmarshaller extends AbstractSAMLObjectUnmarshaller { - - - /** - * Process element content. - * - * @param samlObject the SAML object - * @param elementContent the element content - */ - protected final void processElementContent(final XMLObject samlObject, - final String elementContent) { - final SPSector spSector = (SPSector) samlObject; - spSector.setSPSector(elementContent); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java deleted file mode 100644 index 80796ea86..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java +++ /dev/null @@ -1,468 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.io.IOException; -import java.io.InputStream; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.Provider; -import java.security.Security; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.InvalidPropertiesFormatException; -import java.util.List; -import java.util.Properties; - -import eu.stork.peps.auth.engine.X509PrincipalUtil; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.NotImplementedException; -import org.bouncycastle.jce.X509Principal; -import org.opensaml.Configuration; -import org.opensaml.common.SAMLObject; -import org.opensaml.common.SignableSAMLObject; -import org.opensaml.saml2.core.Assertion; -import org.opensaml.saml2.core.LogoutResponse; -import org.opensaml.saml2.core.Response; -import org.opensaml.security.SAMLSignatureProfileValidator; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.security.SecurityConfiguration; -import org.opensaml.xml.security.SecurityException; -import org.opensaml.xml.security.credential.Credential; -import org.opensaml.xml.security.keyinfo.KeyInfoGenerator; -import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory; -import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorManager; -import org.opensaml.xml.security.keyinfo.KeyInfoHelper; -import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager; -import org.opensaml.xml.security.x509.BasicX509Credential; -import org.opensaml.xml.security.trust.ExplicitKeyTrustEvaluator; -import org.opensaml.xml.signature.KeyInfo; -import org.opensaml.xml.signature.Signature; -import org.opensaml.xml.signature.SignatureConstants; -import org.opensaml.xml.signature.SignatureException; -import org.opensaml.xml.signature.SignatureValidator; -import org.opensaml.xml.signature.Signer; -import org.opensaml.xml.validation.ValidationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.SAMLEngineSignI; -import eu.stork.peps.exceptions.SAMLEngineException; - -/** - * The Class HWSign. Module of sign. - * - * @author fjquevedo - */ -public final class SignHW implements SAMLEngineSignI { - - /** The Constant CONFIGURATION_FILE. */ - private static final String CONF_FILE = "configurationFile"; - - /** The Constant KEYSTORE_TYPE. - private static final String KEYSTORE_TYPE = "keystoreType" */ - - /** The logger. */ - private static final Logger LOG = LoggerFactory.getLogger(SignHW.class - .getName()); - - /** The stork own key store. */ - private KeyStore storkOwnKeyStore = null; - - /** - * Gets the stork own key store. - * - * @return the stork own key store - */ - public KeyStore getStorkOwnKeyStore() { - return storkOwnKeyStore; - } - - /** - * Gets the stork trustStore. - * - * @return the stork own key store - */ - public KeyStore getTrustStore() { - return storkOwnKeyStore; - } - - /** - * Sets the stork own key store. - * - * @param newkOwnKeyStore the new stork own key store - */ - public void setStorkOwnKeyStore(final KeyStore newkOwnKeyStore) { - this.storkOwnKeyStore = newkOwnKeyStore; - } - - /** - * Gets the properties. - * - * @return the properties - */ - public Properties getProperties() { - return properties; - } - - /** - * Sets the properties. - * - * @param newProperties the new properties - */ - public void setProperties(final Properties newProperties) { - this.properties = newProperties; - } - - /** The HW sign prop. */ - private Properties properties = null; - - /** - * @see - * eu.stork.peps.auth.engine.core.SAMLEngineSignI#init(java.lang.String) - * @param fileConf file of configuration - * @throws SAMLEngineException error in read file - */ - public void init(final String fileConf) - throws SAMLEngineException { - InputStream inputStr = null; - try { - inputStr = SignHW.class.getResourceAsStream("/" - + fileConf); - properties = new Properties(); - - properties.loadFromXML(inputStr); - } catch (final InvalidPropertiesFormatException e) { - LOG.info("Exception: invalid properties format."); - throw new SAMLEngineException(e); - } catch (IOException e) { - LOG.info("Exception: invalid file: " + fileConf); - throw new SAMLEngineException(e); - } finally { - IOUtils.closeQuietly(inputStr); - } - } - - - /** - * @see eu.stork.peps.auth.engine.core.SAMLEngineSignI#getCertificate() - * @return the X509Certificate. - */ - public X509Certificate getCertificate() { - throw new NotImplementedException(); - } - - /** - * @see - * eu.stork.peps.auth.engine.core.SAMLEngineSignI#sign(SignableSAMLObject tokenSaml) - * @param tokenSaml signable SAML Object - * @return the SAMLObject signed. - * @throws SAMLEngineException error in sign token saml - */ - public SAMLObject sign(final SignableSAMLObject tokenSaml) throws SAMLEngineException { - - try { - LOG.info("Star procces of sign"); - final char[] pin = properties.getProperty("keyPassword") - .toCharArray(); - - storkOwnKeyStore.load(null, pin); - - final String serialNumber = properties.getProperty("serialNumber"); - final String issuer = properties.getProperty("issuer"); - - String alias = null; - String aliasCert; - X509Certificate certificate; - - boolean find = false; - for (final Enumeration e = storkOwnKeyStore.aliases(); e - .hasMoreElements() && !find;) { - aliasCert = e.nextElement(); - certificate = (X509Certificate) storkOwnKeyStore - .getCertificate(aliasCert); - // Verified serial number, issuer - - final String serialNum = certificate.getSerialNumber() - .toString(16); - X509Principal issuerDN = new X509Principal(certificate.getIssuerDN().getName()); - X509Principal issuerDNConf = new X509Principal(issuer); - - if(serialNum.equalsIgnoreCase(serialNumber) - && X509PrincipalUtil.equals(issuerDN, issuerDNConf)){ - alias = aliasCert; - find = true; - } - - } - - if (!find) { - throw new SAMLEngineException("Certificate cannot be found in keystore "); - } - certificate = (X509Certificate) storkOwnKeyStore.getCertificate(alias); - final PrivateKey privateKey = (PrivateKey) storkOwnKeyStore.getKey( - alias, pin); - - LOG.info("Recover BasicX509Credential."); - final BasicX509Credential credential = new BasicX509Credential(); - - LOG.debug("Load certificate"); - credential.setEntityCertificate(certificate); - - LOG.debug("Load privateKey"); - credential.setPrivateKey(privateKey); - - LOG.info("Star procces of sign"); - final Signature signature = (Signature) org.opensaml.xml.Configuration - .getBuilderFactory().getBuilder( - Signature.DEFAULT_ELEMENT_NAME).buildObject( - Signature.DEFAULT_ELEMENT_NAME); - - LOG.debug("Begin signature with openSaml"); - signature.setSigningCredential(credential); - - /*signature.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);*/ - signature.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); - - - - final SecurityConfiguration securityConf = - org.opensaml.xml.Configuration.getGlobalSecurityConfiguration(); - final NamedKeyInfoGeneratorManager keyInfoManager = securityConf - .getKeyInfoGeneratorManager(); - final KeyInfoGeneratorManager keyInfoGenManager = keyInfoManager - .getDefaultManager(); - final KeyInfoGeneratorFactory keyInfoGenFac = keyInfoGenManager - .getFactory(credential); - final KeyInfoGenerator keyInfoGenerator = keyInfoGenFac - .newInstance(); - - final KeyInfo keyInfo = keyInfoGenerator.generate(credential); - - signature.setKeyInfo(keyInfo); - - LOG.debug("Set Canonicalization Algorithm"); - signature.setCanonicalizationAlgorithm( - SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); - - //Create a second signature which will be used when signing assertion and response - final Signature signature2 = (Signature) Configuration - .getBuilderFactory().getBuilder( - Signature.DEFAULT_ELEMENT_NAME).buildObject( - Signature.DEFAULT_ELEMENT_NAME); - final SecurityConfiguration secConfiguration2 = Configuration - .getGlobalSecurityConfiguration(); - final NamedKeyInfoGeneratorManager keyInfoManager2 = secConfiguration2 - .getKeyInfoGeneratorManager(); - final KeyInfoGeneratorManager keyInfoGenManager2 = keyInfoManager2 - .getDefaultManager(); - final KeyInfoGeneratorFactory keyInfoGenFac2 = keyInfoGenManager2 - .getFactory(credential); - final KeyInfoGenerator keyInfoGenerator2 = keyInfoGenFac2 - .newInstance(); - - KeyInfo keyInfo2 = keyInfoGenerator2.generate(credential); - signature2.setSigningCredential(credential); - signature2.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); - signature2.setKeyInfo(keyInfo2); - signature2.setCanonicalizationAlgorithm( - SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); - - - LOG.info("Marshall samlToken."); - String qn = tokenSaml.getElementQName().toString(); - - if (qn.endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) - { - tokenSaml.setSignature(signature); - CustomAttributeQueryMarshaller mars = new CustomAttributeQueryMarshaller(); - mars.marshall(tokenSaml); - Signer.signObject(signature); - } - else if (qn.endsWith(Response.DEFAULT_ELEMENT_LOCAL_NAME) && !qn.contains(LogoutResponse.DEFAULT_ELEMENT_LOCAL_NAME)) - { - Response res = (Response)tokenSaml; - List asserts = res.getAssertions(); - //If multiple assertions we just sign the response and not the assertion - if (asserts.size() > 1) - { - tokenSaml.setSignature(signature); - Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - } - //If single assertion we sign the assertion and response - else - { - Assertion assertion = (Assertion)asserts.get(0); - assertion.setSignature(signature); - tokenSaml.setSignature(signature2); - Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - Signer.signObject(signature2); - } - } - //Normally we just sign the total saml response - else - { - tokenSaml.setSignature(signature); - Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - } - - } catch (final MarshallingException e) { - LOG.error("MarshallingException"); - throw new SAMLEngineException(e); - } catch (final NoSuchAlgorithmException e) { - LOG.error("A 'xmldsig#rsa-sha1' cryptographic algorithm is requested but is not available in the environment."); - throw new SAMLEngineException(e); - } catch (final KeyStoreException e) { - LOG.error("Generic KeyStore exception."); - throw new SAMLEngineException(e); - } catch (final SignatureException e) { - LOG.error("Signature exception."); - throw new SAMLEngineException(e); - } catch (final SecurityException e) { - LOG.error("Security exception."); - throw new SAMLEngineException(e); - } catch (final CertificateException e) { - LOG.error("Certificate exception."); - throw new SAMLEngineException(e); - } catch (final IOException e) { - LOG.error("IO exception."); - throw new SAMLEngineException(e); - } catch (final UnrecoverableKeyException e) { - LOG.error("UnrecoverableKeyException exception."); - throw new SAMLEngineException(e); - } - - return tokenSaml; - } - - /** - * @see - * eu.stork.peps.auth.engine.core.SAMLEngineSignI#validateSignature(SignableSAMLObject) - * @param tokenSaml the token saml - * @return the SAMLObject validated. - * @throws SAMLEngineException exception in validate signature - */ - public SAMLObject validateSignature(final SignableSAMLObject tokenSaml) - throws SAMLEngineException { - LOG.info("Start signature validation."); - try { - - // Validate structure signature - final SAMLSignatureProfileValidator signProfValidator = - new SAMLSignatureProfileValidator(); - - // Indicates signature id conform to SAML Signature profile - signProfValidator.validate(tokenSaml.getSignature()); - - String aliasCert; - X509Certificate certificate; - - final List trustedCred = new ArrayList(); - - for (final Enumeration e = storkOwnKeyStore.aliases(); e - .hasMoreElements();) { - aliasCert = e.nextElement(); - final BasicX509Credential credential = new BasicX509Credential(); - certificate = (X509Certificate) storkOwnKeyStore - .getCertificate(aliasCert); - credential.setEntityCertificate(certificate); - trustedCred.add(credential); - } - - final KeyInfo keyInfo = tokenSaml.getSignature().getKeyInfo(); - final List listCertificates = KeyInfoHelper - .getCertificates(keyInfo); - - if (listCertificates.size() != 1) { - throw new SAMLEngineException("Only must be one certificate"); - } - - // Exist only one certificate - final BasicX509Credential entityX509Cred = new BasicX509Credential(); - entityX509Cred.setEntityCertificate(listCertificates.get(0)); - - final ExplicitKeyTrustEvaluator keyTrustEvaluator = - new ExplicitKeyTrustEvaluator(); - if (!keyTrustEvaluator.validate(entityX509Cred, trustedCred)) { - throw new SAMLEngineException("Certificate it is not trusted."); - } - - final SignatureValidator sigValidator = new SignatureValidator( - entityX509Cred); - - sigValidator.validate(tokenSaml.getSignature()); - - } catch (final ValidationException e) { - LOG.error("ValidationException.", e); - throw new SAMLEngineException(e); - } catch (final KeyStoreException e) { - LOG.error("ValidationException.", e); - throw new SAMLEngineException(e); - } catch (final CertificateException e) { - LOG.error("CertificateException.", e); - throw new SAMLEngineException(e); - } - return tokenSaml; - } - - /** - * load cryptographic service provider. - * - * @throws SAMLEngineException the SAML engine exception - * Note this class was using pkcs11Provider - * final Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(inputStream) - * if (Security.getProperty(pkcs11Provider.getName()) == null) { - * Security.insertProviderAt(pkcs11Provider, Security .getProviders().length) - * } - * storkOwnKeyStore = KeyStore.getInstance(properties.getProperty(KEYSTORE_TYPE)) - */ - public void loadCryptServiceProvider() throws SAMLEngineException { - LOG.info("Load Cryptographic Service Provider"); - InputStream inputStream = null; - - try { - inputStream = SignHW.class.getResourceAsStream("/" - + properties.getProperty(CONF_FILE)); - - } catch (final Exception e) { - throw new SAMLEngineException( - "Error loading CryptographicServiceProvider", e); - } finally { - IOUtils.closeQuietly(inputStream); - } - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java deleted file mode 100644 index c37074eab..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.engine.core.SAMLEngineSignI; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - -/** - * The Class ModuleSignFactory. - * - * @author fjquevedo - * - */ - -public final class SignModuleFactory { - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(SignModuleFactory.class.getName()); - - /** - * Instantiates a new module sign factory. - */ - private SignModuleFactory() { - - } - - /** - * Gets the single instance of SignModuleFactory. - * - * @param className the class name - * - * @return single instance of SignModuleFactory - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static SAMLEngineSignI getInstance(final String className) - throws STORKSAMLEngineException { - LOG.info("[START]SignModuleFactory static"); - try { - final Class cls = Class.forName(className); - return (SAMLEngineSignI) cls.newInstance(); - } catch (Exception e) { - throw new STORKSAMLEngineException(e); - } - - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java deleted file mode 100644 index 6d9ac9ce3..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java +++ /dev/null @@ -1,565 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.io.ByteArrayInputStream; -import java.io.FileInputStream; -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.PrivateKey; -import java.security.Provider; -import java.security.Security; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.InvalidPropertiesFormatException; -import java.util.List; -import java.util.Properties; - -import eu.stork.peps.auth.engine.X509PrincipalUtil; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.NotImplementedException; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.opensaml.Configuration; -import org.opensaml.common.SAMLObject; -import org.opensaml.common.SignableSAMLObject; -import org.opensaml.saml2.core.Assertion; -import org.opensaml.saml2.core.LogoutResponse; -import org.opensaml.saml2.core.Response; -import org.opensaml.security.SAMLSignatureProfileValidator; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.security.SecurityConfiguration; -import org.opensaml.xml.security.SecurityException; -import org.opensaml.xml.security.credential.Credential; -import org.opensaml.xml.security.keyinfo.KeyInfoGenerator; -import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory; -import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorManager; -import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager; -import org.opensaml.xml.security.x509.BasicX509Credential; -import org.opensaml.xml.security.trust.ExplicitKeyTrustEvaluator; -import org.opensaml.xml.signature.KeyInfo; -import org.opensaml.xml.signature.Signature; -import org.opensaml.xml.signature.SignatureConstants; -import org.opensaml.xml.signature.SignatureException; -import org.opensaml.xml.signature.SignatureValidator; -import org.opensaml.xml.signature.Signer; -import org.opensaml.xml.util.Base64; -import org.opensaml.xml.validation.ValidationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.SAMLEngineSignI; -import eu.stork.peps.exceptions.SAMLEngineException; - -/** - * The Class SWSign. Class responsible for signing and validating of messages - * SAML with a certificate store software. - * - * @author fjquevedo - */ -public final class SignP12 implements SAMLEngineSignI { - - /** The logger. */ - private static final Logger LOG = LoggerFactory.getLogger(SignP12.class - .getName()); - - - /** The p12 store. */ - private KeyStore p12Store = null; - - - /** The trust store. */ - private KeyStore trustStore = null; - - - /** - * Gets the trust store. - * - * @return the trust store - */ - @Override - public KeyStore getTrustStore() { - return trustStore; - } - - /** - * Sets the trust store. - * - * @param newTrustStore the new trust store - */ - public void setTrustStore(final KeyStore newTrustStore) { - this.trustStore = newTrustStore; - } - - /** - * The instance. - * - * @return the properties - */ - - public Properties getProperties() { - return properties; - } - - - - /** - * Gets the p12 store. - * - * @return the p12 store - */ - public KeyStore getP12Store() { - return p12Store; - } - - - - /** - * Sets the p12 store. - * - * @param newP12Store the new p12 store - */ - public void setP12Store(final KeyStore newP12Store) { - this.p12Store = newP12Store; - } - - - - /** - * Sets the properties. - * - * @param newProperties the new properties - */ - public void setProperties(final Properties newProperties) { - this.properties = newProperties; - } - - /** The SW sign prop. */ - private Properties properties = null; - - - /** - * Initialize the file configuration. - * - * @param fileConf name of the file configuration - * - * @throws SAMLEngineException error at the load from file configuration - */ - @Override - public void init(final String fileConf) throws SAMLEngineException { - InputStream fileProperties = null; - properties = new Properties(); - try { - try { - LOG.debug("Fichero a cargar " + fileConf); - fileProperties = new FileInputStream(fileConf); - properties.loadFromXML(fileProperties); - } catch (Exception e) { - LOG.error("Fallo al cargar el recurso externo. Se reintenta como fichero interno."); - fileProperties = SignP12.class.getResourceAsStream("/" + fileConf); - if (fileProperties == null) { - fileProperties = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileConf); - if (fileProperties == null) { - Enumeration files = ClassLoader.getSystemClassLoader().getResources(fileConf); - if (files != null && files.hasMoreElements()) { - LOG.info("Se han encontrado recurso/s. Se toma el primero."); - fileProperties = ClassLoader.getSystemClassLoader().getResourceAsStream(files.nextElement().getFile()); - } else { - throw new IOException("No se pudo recuperar el fichero: " + fileConf, e); - } - } - } - LOG.debug("Recuperados " + fileProperties.available() + " bytes"); - properties.loadFromXML(fileProperties); - } - } catch (InvalidPropertiesFormatException e) { - LOG.info("Exception: invalid properties format."); - throw new SAMLEngineException(e); - } catch (IOException e) { - LOG.info("Exception: invalid file: " + fileConf); - throw new SAMLEngineException(e); - } finally { - IOUtils.closeQuietly(fileProperties); - } - } - - /** - * Gets the certificate. - * - * @return the X509Certificate - * - */ - @Override - public X509Certificate getCertificate() { - throw new NotImplementedException(); - } - - /** - * Sign the token SAML. - * - * @param tokenSaml token SAML - * - * @return the X509Certificate signed. - * - * @throws SAMLEngineException error at sign SAML token - * - */ - @Override - public SAMLObject sign(final SignableSAMLObject tokenSaml) - throws SAMLEngineException { - LOG.info("Start Sign process"); - try { - - final String serialNumber = properties.getProperty("serialNumber"); - final String issuer = properties.getProperty("issuer"); - - String alias = null; - String aliasCert; - X509Certificate certificate; - - boolean find = false; - for (final Enumeration e = p12Store.aliases(); e - .hasMoreElements() && !find;) { - aliasCert = e.nextElement(); - certificate = (X509Certificate) p12Store - .getCertificate(aliasCert); - - final String serialNum = certificate.getSerialNumber() - .toString(16); - - X509Principal issuerDN = new X509Principal(certificate.getIssuerDN().getName()); - X509Principal issuerDNConf = new X509Principal(issuer); - - if(serialNum.equalsIgnoreCase(serialNumber) - && X509PrincipalUtil.equals(issuerDN, issuerDNConf)){ - alias = aliasCert; - find = true; - } - - } - - certificate = (X509Certificate) p12Store - .getCertificate(alias); - final PrivateKey privateKey = (PrivateKey) p12Store.getKey( - alias, properties.getProperty("keyPassword").toCharArray()); - - LOG.info("Recover BasicX509Credential."); - final BasicX509Credential credential = new BasicX509Credential(); - - LOG.debug("Load certificate"); - credential.setEntityCertificate(certificate); - - LOG.debug("Load privateKey"); - credential.setPrivateKey(privateKey); - - LOG.debug("Begin signature with openSaml"); - final Signature signature = (Signature) org.opensaml.xml.Configuration - .getBuilderFactory().getBuilder( - Signature.DEFAULT_ELEMENT_NAME).buildObject( - Signature.DEFAULT_ELEMENT_NAME); - - signature.setSigningCredential(credential); - - /*signature.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);*/ - signature.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); - - final SecurityConfiguration secConfiguration = org.opensaml.xml.Configuration - .getGlobalSecurityConfiguration(); - final NamedKeyInfoGeneratorManager keyInfoManager = secConfiguration - .getKeyInfoGeneratorManager(); - final KeyInfoGeneratorManager keyInfoGenManager = keyInfoManager - .getDefaultManager(); - final KeyInfoGeneratorFactory keyInfoGenFac = keyInfoGenManager - .getFactory(credential); - final KeyInfoGenerator keyInfoGenerator = keyInfoGenFac - .newInstance(); - - final KeyInfo keyInfo = keyInfoGenerator.generate(credential); - - signature.setKeyInfo(keyInfo); - signature.setCanonicalizationAlgorithm( - SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); - - //Create a second signature which will be used when signing assertion and response - final Signature signature2 = (Signature) org.opensaml.xml.Configuration - .getBuilderFactory().getBuilder( - Signature.DEFAULT_ELEMENT_NAME).buildObject( - Signature.DEFAULT_ELEMENT_NAME); - final SecurityConfiguration secConfiguration2 = org.opensaml.xml.Configuration - .getGlobalSecurityConfiguration(); - final NamedKeyInfoGeneratorManager keyInfoManager2 = secConfiguration2 - .getKeyInfoGeneratorManager(); - final KeyInfoGeneratorManager keyInfoGenManager2 = keyInfoManager2 - .getDefaultManager(); - final KeyInfoGeneratorFactory keyInfoGenFac2 = keyInfoGenManager2 - .getFactory(credential); - final KeyInfoGenerator keyInfoGenerator2 = keyInfoGenFac2 - .newInstance(); - - KeyInfo keyInfo2 = keyInfoGenerator2.generate(credential); - signature2.setSigningCredential(credential); - signature2.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); - signature2.setKeyInfo(keyInfo2); - signature2.setCanonicalizationAlgorithm( - SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); - - - LOG.info("Marshall samlToken."); - String qn = tokenSaml.getElementQName().toString(); - - if (qn.endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) - { - tokenSaml.setSignature(signature); - CustomAttributeQueryMarshaller mars = new CustomAttributeQueryMarshaller(); - mars.marshall(tokenSaml); - Signer.signObject(signature); - } - else if (qn.endsWith(Response.DEFAULT_ELEMENT_LOCAL_NAME) && !qn.contains(LogoutResponse.DEFAULT_ELEMENT_LOCAL_NAME)) - { - Response res = (Response)tokenSaml; - List asserts = res.getAssertions(); - //If multiple assertions we just sign the response and not the assertion - if (asserts.size() > 1) - { - tokenSaml.setSignature(signature); - org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - } - //If single assertion we sign the assertion and response - else - { - Assertion assertion = asserts.get(0); - assertion.setSignature(signature); - tokenSaml.setSignature(signature2); - org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - Signer.signObject(signature2); - } - } - //Normally we just sign the total saml response - else - { - tokenSaml.setSignature(signature); - org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - } - - } catch (MarshallingException e) { - LOG.error("MarshallingException"); - throw new SAMLEngineException(e); - } catch (NoSuchAlgorithmException e) { - LOG.error("A 'xmldsig#rsa-sha1' cryptographic algorithm is requested but is not available in the environment."); - throw new SAMLEngineException(e); - } catch (KeyStoreException e) { - LOG.error("Generic KeyStore exception."); - throw new SAMLEngineException(e); - } catch (SignatureException e) { - LOG.error("Signature exception."); - throw new SAMLEngineException(e); - } catch (SecurityException e) { - LOG.error("Security exception."); - throw new SAMLEngineException(e); - } catch (UnrecoverableKeyException e) { - LOG.error("UnrecoverableKey exception."); - throw new SAMLEngineException(e); - } - - return tokenSaml; - } - - /** - * Validate signature. - * - * @param tokenSaml token SAML - * - * @return the SAMLObject validated. - * - * @throws SAMLEngineException error validate signature - * - */ - @Override - public SAMLObject validateSignature(final SignableSAMLObject tokenSaml) - throws SAMLEngineException { - LOG.info("Start signature validation."); - try { - - // Validate structure signature - final SAMLSignatureProfileValidator sigProfValidator = - new SAMLSignatureProfileValidator(); - try { - // Indicates signature id conform to SAML Signature profile - sigProfValidator.validate(tokenSaml.getSignature()); - } catch (ValidationException e) { - LOG.error("ValidationException: signature isn't conform to SAML Signature profile."); - throw new SAMLEngineException(e); - } - - String aliasCert = null; - X509Certificate certificate; - - final List trustCred = new ArrayList(); - - for (final Enumeration e = trustStore.aliases(); e - .hasMoreElements();) - { - aliasCert = e.nextElement(); - final BasicX509Credential credential = new BasicX509Credential(); - certificate = (X509Certificate) trustStore - .getCertificate(aliasCert); - credential.setEntityCertificate(certificate); - trustCred.add(credential); - } - - final KeyInfo keyInfo = tokenSaml.getSignature().getKeyInfo(); - - final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo - .getX509Datas().get(0).getX509Certificates().get(0); - - final CertificateFactory certFact = CertificateFactory - .getInstance("X.509"); - final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 - .decode(xmlCert.getValue())); - final X509Certificate cert = (X509Certificate) certFact - .generateCertificate(bis); - - // Exist only one certificate - final BasicX509Credential entityX509Cred = new BasicX509Credential(); - entityX509Cred.setEntityCertificate(cert); - - /* A better use of PKI based validation but not wanted for STORK... - boolean trusted = false; - - for (final Enumeration e = trustStore.aliases(); e.hasMoreElements();) - { - aliasCert = e.nextElement(); - certificate = (X509Certificate) trustStore.getCertificate(aliasCert); - try { - cert.verify(certificate.getPublicKey()); - trusted = true; - break; - } - catch (Exception ex) { - //Do nothing - cert not trusted yet - } - } - - if (!trusted) - throw new SAMLEngineException("Certificate is not trusted.");*/ - - // Validate trust certificates - final ExplicitKeyTrustEvaluator keyTrustEvaluator = - new ExplicitKeyTrustEvaluator(); - if (!keyTrustEvaluator.validate(entityX509Cred, trustCred)) - { - throw new SAMLEngineException("Certificate it is not trusted."); - } - - // Validate signature - final SignatureValidator sigValidator = new SignatureValidator( - entityX509Cred); - sigValidator.validate(tokenSaml.getSignature()); - - } catch (ValidationException e) { - LOG.error("ValidationException."); - throw new SAMLEngineException(e); - } catch (KeyStoreException e) { - LOG.error("KeyStoreException.", e); - throw new SAMLEngineException(e); - } catch (GeneralSecurityException e) { - LOG.error("GeneralSecurityException.", e); - throw new SAMLEngineException(e); - } - return tokenSaml; - } - - - /** - * Load cryptographic service provider. - * - * @throws SAMLEngineException the SAML engine exception - */ - @Override - public void loadCryptServiceProvider() throws SAMLEngineException { - LOG.info("Load Cryptographic Service Provider"); - - FileInputStream fis = null; - FileInputStream fisTrustStore = null; - - try { - // Dynamically register Bouncy Castle provider. - boolean found = false; - // Check if BouncyCastle is already registered as a provider - final Provider[] providers = Security.getProviders(); - for (int i = 0; i < providers.length; i++) { - if (providers[i].getName().equals( - BouncyCastleProvider.PROVIDER_NAME)) { - found = true; - } - } - - // Register only if the provider has not been previously registered - if (!found) { - LOG.debug("SAMLCore: Register Bouncy Castle provider."); - Security.insertProviderAt(new BouncyCastleProvider(), Security - .getProviders().length); - } - - p12Store = KeyStore.getInstance(properties - .getProperty("keystoreType")); - - fis = new FileInputStream(properties - .getProperty("keystorePath")); - - p12Store.load(fis, properties.getProperty( - "keyStorePassword").toCharArray()); - - - trustStore = KeyStore.getInstance(properties - .getProperty("trustStoreType")); - - fisTrustStore = new FileInputStream(properties - .getProperty("trustStorePath")); - trustStore.load(fisTrustStore, properties.getProperty( - "trustStorePassword").toCharArray()); - - } catch (Exception e) { - throw new SAMLEngineException( - "Error loading CryptographicServiceProvider", e); - } finally { - IOUtils.closeQuietly(fis); - IOUtils.closeQuietly(fisTrustStore); - } - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java deleted file mode 100644 index e31688069..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java +++ /dev/null @@ -1,527 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import eu.stork.peps.auth.engine.X509PrincipalUtil; -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; -import eu.stork.peps.auth.engine.core.SAMLEngineSignI; -import eu.stork.peps.exceptions.SAMLEngineException; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.NotImplementedException; -import org.bouncycastle.jce.X509Principal; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.opensaml.Configuration; -import org.opensaml.common.SAMLObject; -import org.opensaml.common.SignableSAMLObject; -import org.opensaml.saml2.core.Assertion; -import org.opensaml.saml2.core.LogoutResponse; -import org.opensaml.saml2.core.Response; -import org.opensaml.security.SAMLSignatureProfileValidator; -import org.opensaml.xml.io.MarshallingException; -import org.opensaml.xml.security.SecurityConfiguration; -import org.opensaml.xml.security.SecurityException; -import org.opensaml.xml.security.credential.Credential; -import org.opensaml.xml.security.keyinfo.KeyInfoGenerator; -import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory; -import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorManager; -import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager; -import org.opensaml.xml.security.trust.ExplicitKeyTrustEvaluator; -import org.opensaml.xml.security.trust.ExplicitX509CertificateTrustEvaluator; -import org.opensaml.xml.security.x509.BasicX509Credential; -import org.opensaml.xml.signature.*; -import org.opensaml.xml.signature.Signature; -import org.opensaml.xml.signature.SignatureException; -import org.opensaml.xml.signature.Signer; -import org.opensaml.xml.util.Base64; -import org.opensaml.xml.validation.ValidationException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.ByteArrayInputStream; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.security.*; -import java.security.cert.CertificateExpiredException; -import java.security.cert.CertificateFactory; -import java.security.cert.CertificateNotYetValidException; -import java.security.cert.X509Certificate; -import java.util.*; - - -/** - * The Class SWSign. Class responsible for signing and validating of messages - * SAML with a certificate store software. - * - * @author fjquevedo - */ -public class SignSW implements SAMLEngineSignI { - - /** - * The Constant KEYSTORE_TYPE. - */ - private static final String KEYSTORE_TYPE = "keystoreType"; - - /** - * The Constant KEY_STORE_PASSWORD. - */ - private static final String KEY_STORE_PASS = "keyStorePassword"; - - /** - * The logger. - */ - private static final Logger LOG = LoggerFactory.getLogger(SignSW.class - .getName()); - - /** - * The stork own key store. - */ - private KeyStore storkOwnKeyStore = null; - - /** - * The instance. - * - * @return the properties - */ - - public final Properties getProperties() { - return properties; - } - - /** - * Gets the stork own key store. - * - * @return the stork own key store - */ - public final KeyStore getStorkOwnKeyStore() { - return storkOwnKeyStore; - } - - /** - * Gets the stork trustStore. - * - * @return the stork own key store - */ - public KeyStore getTrustStore() { - return storkOwnKeyStore; - } - - /** - * Sets the stork own key store. - * - * @param newkOwnKeyStore the new stork own key store - */ - public final void setStorkOwnKeyStore(final KeyStore newkOwnKeyStore) { - this.storkOwnKeyStore = newkOwnKeyStore; - } - - /** - * Sets the properties. - * - * @param newProperties the new properties - */ - public final void setProperties(final Properties newProperties) { - this.properties = newProperties; - } - - /** - * The SW sign prop. - */ - private Properties properties = null; - - - /** - * Inits the file configuration. - * - * @param fileConf name of the file configuration - * @throws SAMLEngineException error at the load from file configuration - */ - public final void init(final String fileConf) - throws SAMLEngineException { - InputStream fileProperties = null; - // fetch base from system properties, give a default if there is nothing configured - String base = System.getProperty("eu.stork.samlengine.config.location"); - if (null != base) { - if (!base.endsWith("/")) { - base += "/"; - } - } else { - base = "/"; - } - - try { - if (null != base) - fileProperties = new FileInputStream(base + fileConf); - else - fileProperties = SignSW.class.getResourceAsStream("/" - + fileConf); - properties = new Properties(); - - properties.loadFromXML(fileProperties); - fileProperties.close(); - } catch (InvalidPropertiesFormatException e) { - LOG.info("Exception: invalid properties format."); - throw new SAMLEngineException(e); - } catch (IOException e) { - LOG.info("Exception: invalid file: " + fileConf); - throw new SAMLEngineException(e); - } finally { - IOUtils.closeQuietly(fileProperties); - } - } - - /** - * @return the X509Certificate - * @see eu.stork.peps.auth.engine.core.SAMLEngineSignI#getCertificate() - */ - public final X509Certificate getCertificate() { - throw new NotImplementedException(); - } - - - /** - * Sign the token SAML. - * - * @param tokenSaml the token SAML. - * @return the SAML object - * @throws SAMLEngineException the SAML engine exception - */ - public final SAMLObject sign(final SignableSAMLObject tokenSaml) - throws SAMLEngineException { - LOG.info("Start Sign process."); - try { - final String serialNumber = properties.getProperty("serialNumber"); - final String issuer = properties.getProperty("issuer"); - - String alias = null; - String aliasCert; - X509Certificate certificate; - boolean find = false; - - for (final Enumeration e = storkOwnKeyStore.aliases(); e - .hasMoreElements() && !find; ) { - aliasCert = e.nextElement(); - certificate = (X509Certificate) storkOwnKeyStore - .getCertificate(aliasCert); - - final String serialNum = certificate.getSerialNumber() - .toString(16); - - X509Principal issuerDN = new X509Principal(certificate.getIssuerDN().getName()); - X509Principal issuerDNConf = new X509Principal(issuer); - - if (serialNum.equalsIgnoreCase(serialNumber) - && X509PrincipalUtil.equals(issuerDN, issuerDNConf)) { - alias = aliasCert; - find = true; - } - } - if (!find) { - throw new SAMLEngineException("Certificate cannot be found in keystore "); - } - certificate = (X509Certificate) storkOwnKeyStore.getCertificate(alias); - final PrivateKey privateKey = (PrivateKey) storkOwnKeyStore.getKey( - alias, properties.getProperty("keyPassword").toCharArray()); - - LOG.info("Recover BasicX509Credential."); - final BasicX509Credential credential = new BasicX509Credential(); - - LOG.debug("Load certificate"); - credential.setEntityCertificate(certificate); - - LOG.debug("Load privateKey"); - credential.setPrivateKey(privateKey); - - LOG.debug("Begin signature with openSaml"); - final Signature signature = (Signature) Configuration - .getBuilderFactory().getBuilder( - Signature.DEFAULT_ELEMENT_NAME).buildObject( - Signature.DEFAULT_ELEMENT_NAME); - - signature.setSigningCredential(credential); - signature.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); - //signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1); - - - final SecurityConfiguration secConfiguration = Configuration - .getGlobalSecurityConfiguration(); - final NamedKeyInfoGeneratorManager keyInfoManager = secConfiguration - .getKeyInfoGeneratorManager(); - final KeyInfoGeneratorManager keyInfoGenManager = keyInfoManager - .getDefaultManager(); - final KeyInfoGeneratorFactory keyInfoGenFac = keyInfoGenManager - .getFactory(credential); - final KeyInfoGenerator keyInfoGenerator = keyInfoGenFac - .newInstance(); - - KeyInfo keyInfo = keyInfoGenerator.generate(credential); - - signature.setKeyInfo(keyInfo); - signature.setCanonicalizationAlgorithm( - SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); - - //Create a second signature which will be used when signing assertion and response - final Signature signature2 = (Signature) Configuration - .getBuilderFactory().getBuilder( - Signature.DEFAULT_ELEMENT_NAME).buildObject( - Signature.DEFAULT_ELEMENT_NAME); - final SecurityConfiguration secConfiguration2 = Configuration - .getGlobalSecurityConfiguration(); - final NamedKeyInfoGeneratorManager keyInfoManager2 = secConfiguration2 - .getKeyInfoGeneratorManager(); - final KeyInfoGeneratorManager keyInfoGenManager2 = keyInfoManager2 - .getDefaultManager(); - final KeyInfoGeneratorFactory keyInfoGenFac2 = keyInfoGenManager2 - .getFactory(credential); - final KeyInfoGenerator keyInfoGenerator2 = keyInfoGenFac2 - .newInstance(); - - KeyInfo keyInfo2 = keyInfoGenerator2.generate(credential); - signature2.setSigningCredential(credential); - signature2.setSignatureAlgorithm( - SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); - //signature2.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1); - signature2.setKeyInfo(keyInfo2); - signature2.setCanonicalizationAlgorithm( - SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); - - - LOG.info("Marshall samlToken."); - String qn = tokenSaml.getElementQName().toString(); - - if (qn.endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) { - tokenSaml.setSignature(signature); - CustomAttributeQueryMarshaller mars = new CustomAttributeQueryMarshaller(); - mars.marshall(tokenSaml); - Signer.signObject(signature); - } else if (qn.endsWith(Response.DEFAULT_ELEMENT_LOCAL_NAME) && !qn.contains(LogoutResponse.DEFAULT_ELEMENT_LOCAL_NAME)) { - Response res = (Response) tokenSaml; - List asserts = res.getAssertions(); - //If multiple assertions we just sign the response and not the assertion - if (asserts.size() > 1) { - tokenSaml.setSignature(signature); - Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - } - //If single assertion we sign the assertion and response - else { - Assertion assertion = (Assertion) asserts.get(0); - assertion.setSignature(signature); - tokenSaml.setSignature(signature2); - Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - Signer.signObject(signature2); - } - } - //Normally we just sign the total saml response - else { - tokenSaml.setSignature(signature); - Configuration.getMarshallerFactory().getMarshaller(tokenSaml) - .marshall(tokenSaml); - LOG.info("Sign samlToken."); - Signer.signObject(signature); - } - - - } catch (MarshallingException e) { - LOG.error("MarshallingException"); - throw new SAMLEngineException(e); - } catch (NoSuchAlgorithmException e) { - LOG.error("A 'xmldsig#rsa-sha1' cryptographic algorithm is requested but is not available in the environment."); - throw new SAMLEngineException(e); - } catch (KeyStoreException e) { - LOG.error("Generic KeyStore exception."); - throw new SAMLEngineException(e); - } catch (SignatureException e) { - LOG.error("Signature exception."); - throw new SAMLEngineException(e); - } catch (SecurityException e) { - LOG.error("Security exception."); - throw new SAMLEngineException(e); - } catch (UnrecoverableKeyException e) { - LOG.error("UnrecoverableKey exception."); - throw new SAMLEngineException(e); - } - - return tokenSaml; - } - - /** - * @param tokenSaml token SAML - * @return the SAMLObject validated. - * @throws SAMLEngineException error validate signature - * @see eu.stork.peps.auth.engine.core.SAMLEngineSignI#validateSignature(org.opensaml.common.SignableSAMLObject) - */ - public final SAMLObject validateSignature(final SignableSAMLObject tokenSaml) - throws SAMLEngineException { - LOG.info("Start signature validation."); - try { - - // Validate structure signature - final SAMLSignatureProfileValidator sigProfValidator = - new SAMLSignatureProfileValidator(); - try { - // Indicates signature id conform to SAML Signature profile - sigProfValidator.validate(tokenSaml.getSignature()); - } catch (ValidationException e) { - LOG.error("ValidationException: signature isn't conform to SAML Signature profile."); - throw new SAMLEngineException(e); - } - - String aliasCert = null; - X509Certificate certificate; - - final List trustCred = new ArrayList(); - - for (final Enumeration e = storkOwnKeyStore.aliases(); e - .hasMoreElements(); ) { - aliasCert = e.nextElement(); - final BasicX509Credential credential = new BasicX509Credential(); - certificate = (X509Certificate) storkOwnKeyStore - .getCertificate(aliasCert); - credential.setEntityCertificate(certificate); - trustCred.add(credential); - } - - final KeyInfo keyInfo = tokenSaml.getSignature().getKeyInfo(); - - final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo - .getX509Datas().get(0).getX509Certificates().get(0); - - final CertificateFactory certFact = CertificateFactory - .getInstance("X.509"); - final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 - .decode(xmlCert.getValue())); - final X509Certificate cert = (X509Certificate) certFact - .generateCertificate(bis); - - // Exist only one certificate - final BasicX509Credential entityX509Cred = new BasicX509Credential(); - entityX509Cred.setEntityCertificate(cert); - - try { - cert.checkValidity(); - } catch (CertificateExpiredException exp) { - throw new SAMLEngineException("Certificate expired."); - } catch (CertificateNotYetValidException exp) { - throw new SAMLEngineException("Certificate not yet valid."); - } - - /* A better use of PKI based validation but not wanted for STORK... - boolean trusted = false; - - for (final Enumeration e = storkOwnKeyStore.aliases(); e.hasMoreElements();) - { - aliasCert = e.nextElement(); - certificate = (X509Certificate) storkOwnKeyStore.getCertificate(aliasCert); - try { - cert.verify(certificate.getPublicKey()); - trusted = true; - break; - } - catch (Exception ex) { - //Do nothing - cert not trusted yet - } - } - - if (!trusted) - throw new SAMLEngineException("Certificate is not trusted.");*/ - - // Validate trust certificates - final ExplicitX509CertificateTrustEvaluator chainTrustEvaluator = new ExplicitX509CertificateTrustEvaluator(); - - if (!chainTrustEvaluator.validate(entityX509Cred, trustCred)) { - throw new SAMLEngineException("Certificate is not trusted."); - } - final ExplicitKeyTrustEvaluator keyTrustEvaluator = - new ExplicitKeyTrustEvaluator(); - - if (!keyTrustEvaluator.validate(entityX509Cred, trustCred)) { - throw new SAMLEngineException("Certificate is not trusted."); - } - - // Validate signature - final SignatureValidator sigValidator = new SignatureValidator( - entityX509Cred); - sigValidator.validate(tokenSaml.getSignature()); - - } catch (ValidationException e) { - LOG.error("ValidationException."); - throw new SAMLEngineException(e); - } catch (KeyStoreException e) { - LOG.error("KeyStoreException.", e); - throw new SAMLEngineException(e); - } catch (GeneralSecurityException e) { - LOG.error("GeneralSecurityException.", e); - throw new SAMLEngineException(e); - } - LOG.info(tokenSaml.getSignatureReferenceID()); - LOG.info("Start signature validation - END."); - return tokenSaml; - } - - - /** - * Load cryptographic service provider. - * - * @throws SAMLEngineException the SAML engine exception - */ - public final void loadCryptServiceProvider() throws SAMLEngineException { - LOG.info("Load Cryptographic Service Provider"); - FileInputStream fis = null; - try { - // Dynamically register Bouncy Castle provider. - boolean found = false; - // Check if BouncyCastle is already registered as a provider - final Provider[] providers = Security.getProviders(); - for (int i = 0; i < providers.length; i++) { - if (providers[i].getName().equals( - BouncyCastleProvider.PROVIDER_NAME)) { - found = true; - } - } - - // Register only if the provider has not been previously registered - if (!found) { - LOG.info("SAMLCore: Register Bouncy Castle provider."); - Security.insertProviderAt(new BouncyCastleProvider(), Security - .getProviders().length); - } - - storkOwnKeyStore = KeyStore.getInstance(properties - .getProperty(KEYSTORE_TYPE)); - - LOG.info("Loading KeyInfo from keystore file " + properties.getProperty("keystorePath")); - fis = new FileInputStream(properties - .getProperty("keystorePath")); - - storkOwnKeyStore.load(fis, properties.getProperty( - KEY_STORE_PASS).toCharArray()); - - } catch (Exception e) { - LOG.error("Error loading CryptographicServiceProvider", e); - throw new SAMLEngineException( - "Error loading CryptographicServiceProvider", e); - } finally { - IOUtils.closeQuietly(fis); - } - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java deleted file mode 100644 index a60515593..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectBuilder; - -import eu.stork.peps.auth.engine.core.SAMLCore; -import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; - -/** - * The Class VIDPAuthenticationAttributesBuilder. - * - * @author fjquevedo - */ -public final class VIDPAuthenticationAttributesBuilder extends AbstractSAMLObjectBuilder { - - - /** {@inheritDoc} */ - public VIDPAuthenticationAttributes buildObject() { - return buildObject(SAMLCore.STORK10P_NS.getValue(), VIDPAuthenticationAttributes.DEF_LOCAL_NAME, SAMLCore.STORK10P_PREFIX.getValue()); - } - - /** {@inheritDoc} */ - public VIDPAuthenticationAttributes buildObject(final String namespaceURI, final String localName, final String namespacePrefix) { - return new VIDPAuthenticationAttributesImpl(namespaceURI, localName, namespacePrefix); - } - -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java deleted file mode 100644 index 25737e307..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import org.opensaml.common.impl.AbstractSignableSAMLObject; -import org.opensaml.xml.XMLObject; - -import eu.stork.peps.auth.engine.core.CitizenCountryCode; -import eu.stork.peps.auth.engine.core.SPInformation; -import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * The Class VIDPAuthenticationAttributesImpl. - * - * @author fjquevedo - */ -public final class VIDPAuthenticationAttributesImpl extends AbstractSignableSAMLObject implements -VIDPAuthenticationAttributes { - - private static final Logger LOGGER = LoggerFactory.getLogger(VIDPAuthenticationAttributesImpl.class.getName()); - /** The citizen country code. */ - private CitizenCountryCode citizenCountryCode; - - /** The SP information. */ - private SPInformation spInformation; - - /** - * Instantiates a new requested attributes implement. - * - * @param namespaceURI the namespace URI - * @param elementLocalName the element local name - * @param namespacePrefix the namespace prefix - */ - protected VIDPAuthenticationAttributesImpl(final String namespaceURI, - final String elementLocalName, final String namespacePrefix) { - super(namespaceURI, elementLocalName, namespacePrefix); - } - - - /** - * getCitizenCountryCode. - * - * @return the citizen country code - */ - public CitizenCountryCode getCitizenCountryCode() { - return citizenCountryCode; - } - - /** - * getSPInformation - * - * @return the SP information - */ - public SPInformation getSPInformation() { - return spInformation; - } - - /** - * Gets the ordered children. - * - * @return the ordered children - * - */ - public List getOrderedChildren() { - final ArrayList children = new ArrayList(); - - children.add(citizenCountryCode); - children.add(spInformation); - - if (getSignature() != null) { - children.add(getSignature()); - } - - return Collections.unmodifiableList(children); - - } - - /** - * Gets the signature reference id. - * - * @return the signature reference id - * - */ - public String getSignatureReferenceID() { - return null; - } - - /** - * Sets the citizen country code. - * - * @param newCitizenCountryCode the new citizen country code - * - */ - public void setCitizenCountryCode(CitizenCountryCode newCitizenCountryCode) { - this.citizenCountryCode = prepareForAssignment(this.citizenCountryCode, newCitizenCountryCode); - } - - /** - * Sets the SP information. - * - * @param newSPInformation the new SP information - * - */ - public void setSPInformation(SPInformation newSPInformation) { - this.spInformation = prepareForAssignment(this.spInformation, newSPInformation); - } - - @Override - public int hashCode() { - LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); - return super.hashCode(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java deleted file mode 100644 index 5635ddd6b..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; - -/** - * The Class VIDPAuthenticationAttributesMarshaller. - * - * @author fjquevedo - */ -public class VIDPAuthenticationAttributesMarshaller extends AbstractSAMLObjectMarshaller { - - /** - * Instantiates a new vIDP authentication attributes marshaller. - */ - public VIDPAuthenticationAttributesMarshaller() { - super(); - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java deleted file mode 100644 index ba4a4fe3a..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.impl; - -import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.UnmarshallingException; - -import eu.stork.peps.auth.engine.core.CitizenCountryCode; -import eu.stork.peps.auth.engine.core.SPInformation; -import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; - -/** - * The Class VIDPAuthenticationAttributesUnmarshaller. - * - * @author fjquevedo - */ -public class VIDPAuthenticationAttributesUnmarshaller extends - AbstractSAMLObjectUnmarshaller { - - /** - * Process child element. - * - * @param parentObject the parent object - * @param childObject the child object - * - * @throws UnmarshallingException the unmarshalling exception - * - */ - protected final void processChildElement(final XMLObject parentObject, - final XMLObject childObject) throws UnmarshallingException { - final VIDPAuthenticationAttributes vIDPAuthenticationAttr = (VIDPAuthenticationAttributes) parentObject; - - if (childObject instanceof CitizenCountryCode) { - vIDPAuthenticationAttr.setCitizenCountryCode((CitizenCountryCode) childObject); - } else if (childObject instanceof SPInformation) { - vIDPAuthenticationAttr.setSPInformation((SPInformation) childObject); - } else { - super.processChildElement(parentObject, childObject); - } - } -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java deleted file mode 100644 index 07db9c9db..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Implementations of STORK 1.0 core specification types and elements. - */ -package eu.stork.peps.auth.engine.core.impl; \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/package-info.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/package-info.java deleted file mode 100644 index 51745d796..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Interfaces for STORK 1.0 core specification types and elements. - */ -package eu.stork.peps.auth.engine.core; \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java deleted file mode 100644 index c602ad38a..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java +++ /dev/null @@ -1,69 +0,0 @@ -package eu.stork.peps.auth.engine.core.validator; - -import org.opensaml.xml.util.DatatypeHelper; -import org.opensaml.xml.validation.ValidationException; -import org.opensaml.xml.validation.Validator; - -import eu.stork.peps.auth.engine.core.CustomAttributeQuery; - -public class CustomAttributeQueryValidator implements Validator { - - /** - * Validate action. - * - * @param attrQuery the attribute query to validate - * - * @throws ValidationException the validation exception - */ - public final void validate(final CustomAttributeQuery attrQuery) throws ValidationException { - validateAssertion(attrQuery); - validateSubject(attrQuery); - validateDestination(attrQuery); - } - - - /** - * Validate assertion. - * - * @param attrQuery the attribute query - * - * @throws ValidationException the validation exception - */ - protected final void validateAssertion(final CustomAttributeQuery attrQuery) - throws ValidationException { - if (DatatypeHelper.isEmpty(attrQuery.getAssertionConsumerServiceURL())) { - throw new ValidationException("Consumer Service URL must be specified."); - } - } - - /** - * Validate subject - * @param query the attribute query to validate - * @throws ValidationException the validation exception - */ - protected void validateSubject(CustomAttributeQuery query) throws ValidationException { - if (query.getSubject() == null) - throw new ValidationException("Subject is required"); - } - - /** - * Validate the destination - * @param query the query to validate - * @throws ValidationException the validation exception - */ - protected void validateDestination(CustomAttributeQuery query) throws ValidationException { - if (query.getDestination() == null) - throw new ValidationException("Destination is required"); - } - - /** - * Validate the destination - * @param query the query to validate - * @throws ValidationException the validation exception - */ - protected void validateTime(CustomAttributeQuery query) throws ValidationException { - if (query.getIssueInstant().isAfterNow()) - throw new ValidationException("Issue time is in the futue"); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java deleted file mode 100644 index 491549aac..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.validator; - -import java.util.List; - -import org.opensaml.saml2.common.Extensions; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.validation.ValidationException; -import org.opensaml.xml.validation.Validator; - -import eu.stork.peps.auth.engine.core.QAAAttribute; - -/** - * The Class ExtensionsSchemaValidator. - * - * @author fjquevedo - */ -public class ExtensionsSchemaValidator implements Validator { - - - /** - * validate the extensions. - * - * @param extensions the extensions - * - * @throws ValidationException the validation exception - */ - public final void validate(final Extensions extensions) - throws ValidationException { - if (extensions.getUnknownXMLObjects() == null - || extensions.getUnknownXMLObjects().size() <= 0) { - throw new ValidationException("Extension element is empty or not exist."); - } - - List qaa = extensions.getUnknownXMLObjects(QAAAttribute.DEF_ELEMENT_NAME); - - if (qaa.size() == 1) { - final Validator validatorQaa = new QAAAttributeSchemaValidator(); - validatorQaa.validate((QAAAttribute) qaa.get(0)); - } else { - throw new ValidationException( - "Extensions must contain only one element QAALevel."); - } - - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java deleted file mode 100644 index 72639c8ee..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java +++ /dev/null @@ -1,80 +0,0 @@ -package eu.stork.peps.auth.engine.core.validator; - -import org.opensaml.saml2.core.Response; -import org.opensaml.xml.validation.ValidationException; -import org.opensaml.xml.validation.Validator; - - -public class MultipleAssertionResponseValidator implements Validator { - - /** - * Validate action. - * - * @param response the response to validate - * - * @throws ValidationException the validation exception - */ - public final void validate(final Response response) throws ValidationException { - validateAssertion(response); - validateConsent(response); - validateDestination(response); - validateTime(response); - validateId(response); - } - - - /** - * Validate assertion. - * - * @param response the attribute query - * - * @throws ValidationException the validation exception - */ - protected final void validateAssertion(final Response response) - throws ValidationException { - if (response.getAssertions() == null || response.getAssertions().size() < 2) { - throw new ValidationException("Multiple assertions must be specified."); - } - } - - /** - * Validate the Consent - * @param response the response to validate - * @throws ValidationException the validation exception - */ - protected void validateConsent(Response response) throws ValidationException { - if (response.getConsent() == null) - throw new ValidationException("Consent is required"); - } - - /** - * Validate the destination - * @param response the response to validate - * @throws ValidationException the validation exception - */ - protected void validateDestination(Response response) throws ValidationException { - if (response.getDestination() == null) - throw new ValidationException("Destination is required"); - } - - /** - * Validate issue times - * @param response the response to validate - * @throws ValidationException the validation exception - */ - protected void validateTime(Response response) throws ValidationException { - if (response.getIssueInstant().isAfterNow()) - throw new ValidationException("Issue time is in the futue"); - } - - /** - * Validate ids - * @param response the response to validate - * @throws ValidationException the validation exception - */ - protected void validateId(Response response) throws ValidationException { - if (response.getID() == null || response.getInResponseTo() == null) - throw new ValidationException("Id and response id is required"); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java deleted file mode 100644 index 44c9db380..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.auth.engine.core.validator; - -import org.opensaml.xml.util.DatatypeHelper; -import org.opensaml.xml.validation.ValidationException; -import org.opensaml.xml.validation.Validator; - -import eu.stork.peps.auth.engine.core.QAAAttribute; - -/** - * The Class QAAAttributeSchemaValidator. - * - * @author fjquevedo - */ -public class QAAAttributeSchemaValidator implements Validator { - - - /** - * Validate action. - * - * @param qaa the quality authentication assurance level attribute - * - * @throws ValidationException the validation exception - */ - public final void validate(final QAAAttribute qaa) throws ValidationException { - validateAction(qaa); - } - - - /** - * Validate action. - * - * @param qaaAttribute the quality authentication assurance level attribute. - * - * @throws ValidationException the validation exception - */ - protected final void validateAction(final QAAAttribute qaaAttribute) - throws ValidationException { - if (DatatypeHelper.isEmpty(qaaAttribute.getQaaLevel())) { - throw new ValidationException("QAALevel label must be specified."); - } - - final int qaa = Integer.valueOf(qaaAttribute.getQaaLevel()); - - if (qaa < QAAAttribute.MIN_VALUE || qaa > QAAAttribute.MAX_VALUE) { - throw new ValidationException( - "QAALevel label must be greater than 0."); - } - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java deleted file mode 100644 index 07b632773..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Validation rules for STORK 1.0 core types and elements. - */ -package eu.stork.peps.auth.engine.core.validator; \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/package-info.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/package-info.java deleted file mode 100644 index 30130b7f6..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/auth/engine/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Provides the classes necessary to create a SAML message. - */ -package eu.stork.peps.auth.engine; \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java deleted file mode 100644 index c53e18662..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.configuration; - -import eu.stork.peps.exceptions.STORKSAMLEngineException; -import org.apache.commons.io.IOUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.InvalidPropertiesFormatException; -import java.util.Map; -import java.util.Properties; - -/** - * The Class InstanceCreator. - * - * @author fjquevedo - */ -public final class ConfigurationCreator { - - /** - * The Constant LOGGER. - */ - private static final Logger LOGGER = LoggerFactory - .getLogger(ConfigurationCreator.class.getName()); - - /** - * Creates the configuration. - * - * @param instanceConfs the instance configuration - * @return the map< string, map< string, object>> - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public static Map> createConfiguration( - final Map instanceConfs) throws STORKSAMLEngineException { - - final HashMap> instances = - new HashMap>(); - - LOGGER.info("Create configuration."); - try { - // Only create instances for SAMLEngine configuration. - // INSTANCE - for (Map.Entry entry : instanceConfs - .entrySet()) { - final InstanceEngine iEngine = entry.getValue(); - - final Map intance = new HashMap(); - - // CONFIGURATION - for (ConfigurationEngine configuration : iEngine - .getConfiguration()) { - // Properties only for configuration SamlEngine. - if (configuration.getName().equalsIgnoreCase( - "SamlEngineConf")) { - intance.put(configuration.getName(), - getNewInstance(configuration.getParameters() - .get("fileConfiguration"))); - } else { - intance.put(configuration.getName(), configuration - .getParameters()); - } - } - instances.put(entry.getKey(), intance); - } - } catch (STORKSAMLEngineException ex) { - LOGGER.error("Can not create instance from file configuration."); - throw new STORKSAMLEngineException(ex); - } - return instances; - } - - - /** - * Gets the new instance. - * - * @param fileName the file name - * @return the properties from the new instance - * @throws STORKSAMLEngineException the STORKSAML engine - * runtime exception - */ - private static Properties getNewInstance(final String fileName) - throws STORKSAMLEngineException { - InputStream fileEngineProp = null; - - // fetch base from system properties, give a default if there is nothing configured - String base = System.getProperty("eu.stork.samlengine.config.location"); - if (null != base) { - if (!base.endsWith("/")) { - base += "/"; - } - } else { - base = "/"; - } - - LOGGER.info("Create file configuration properties to Stork Saml Engine: " + base + fileName); - - try { - - if (null != base) - fileEngineProp = new FileInputStream(base + fileName); - else - fileEngineProp = ConfigurationCreator.class - .getResourceAsStream(base + fileName); - - final Properties configuration = new Properties(); - configuration.loadFromXML(fileEngineProp); - return configuration; - } catch (InvalidPropertiesFormatException e) { - LOGGER.error("Invalid properties format."); - throw new STORKSAMLEngineException(e); - } catch (IOException e) { - LOGGER.error("Error read file: " + base + fileName); - throw new STORKSAMLEngineException(e); - } finally { - IOUtils.closeQuietly(fileEngineProp); - } - } - - /** - * Instantiates a new instance creator. - */ - private ConfigurationCreator() { - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java deleted file mode 100644 index d9e7e467a..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.configuration; - -import java.util.Map; - -/** - * The Class ConfigurationEngine. - * - * @author fjquevedo - */ -public class ConfigurationEngine { - - /** The name of the configuration file. */ - private String name; - - /** The parameters. */ - private Map parameters; - - /** - * Gets the name. - * - * @return the name - */ - public final String getName() { - return name; - } - - /** - * Gets the parameters. - * - * @return the parameters - */ - public final Map getParameters() { - return parameters; - } - - /** - * Sets the name. - * - * @param newName the new name - */ - public final void setName(final String newName) { - this.name = newName; - } - - /** - * Sets the parameters. - * - * @param newParameters the parameters - */ - public final void setParameters(final Map newParameters) { - this.parameters = newParameters; - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java deleted file mode 100644 index 7968c77ff..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.configuration; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.HashMap; -import java.util.Map; - -import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import eu.stork.peps.exceptions.SAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; - -/** - * The Class ConfigurationReader. - * - * @author fjquevedo - */ -public final class ConfigurationReader { - - /** The Constant SAML_ENGINE_CONFIGURATION_FILE. */ - private static final String ENGINE_CONF_FILE = "SamlEngine.xml"; - - /** The Constant LOGGER. */ - private static final Logger LOGGER = LoggerFactory - .getLogger(ConfigurationReader.class.getName()); - - /** The Constant NODE_CONFIGURATION. */ - private static final String NODE_CONF = "configuration"; - - /** The Constant NODE_CONFIGURATION_NAME. */ - private static final String NODE_CONF_NAME = "name"; - - /** The Constant NODE_INSTANCE_NAME. */ - private static final String NODE_INST_NAME = "name"; - - /** The Constant NODE_INSTANCE. */ - private static final String NODE_INSTANCE = "instance"; - - /** The Constant NODE_CONFIGURATION_NAME. */ - private static final String NODE_PARAM_NAME = "name"; - - /** The Constant NODE_CONFIGURATION_NAME. */ - private static final String NODE_PARAM_VALUE = "value"; - - /** The Constant NODE_CONFIGURATION_NAME. */ - private static final String NODE_PARAMETER = "parameter"; - - /** - * Generate parameters. - * - * @param configurationNode the configuration node - * - * @return the map< string, string> - */ - private static Map generateParam( - final Element configurationNode) { - - final HashMap parameters = new HashMap(); - - final NodeList parameterNodes = configurationNode - .getElementsByTagName(NODE_PARAMETER); - - String parameterName; - String parameterValue; - - for (int k = 0; k < parameterNodes.getLength(); ++k) { - // for every parameter find, process. - final Element parameterNode = (Element) parameterNodes.item(k); - parameterName = parameterNode.getAttribute(NODE_PARAM_NAME); - parameterValue = parameterNode.getAttribute(NODE_PARAM_VALUE); - - // verified the content. - if (StringUtils.isBlank(parameterName) - || StringUtils.isBlank(parameterValue)) { - throw new STORKSAMLEngineRuntimeException( - "Error reader parameters (name - value)."); - } else { - parameters.put(parameterName.trim(), parameterValue.trim()); - } - } - return parameters; - } - - /** - * Read configuration. - * - * @return the map< string, instance engine> - * - * @throws SAMLEngineException the STORKSAML engine runtime - * exception - */ - public static Map readConfiguration() - throws SAMLEngineException { - - // fetch base from system properties, give a default if there is nothing configured - String base = System.getProperty("eu.stork.samlengine.config.location"); - if(null != base) - if(!base.endsWith("/")) - base += "/"; - - - LOGGER.info("Init reader: " + base + ENGINE_CONF_FILE); - final Map instanceConfs = - new HashMap(); - - Document document = null; - // Load configuration file - final DocumentBuilderFactory factory = DocumentBuilderFactory - .newInstance(); - DocumentBuilder builder; - - InputStream engineConf = null; - try { - - factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - - builder = factory.newDocumentBuilder(); - - if (null != base) - engineConf = new FileInputStream(base + ENGINE_CONF_FILE); - else - engineConf = ConfigurationReader.class.getResourceAsStream("/" + ENGINE_CONF_FILE); - - document = builder.parse(engineConf); - - // Read instance - final NodeList list = document.getElementsByTagName(NODE_INSTANCE); - - for (int indexElem = 0; indexElem < list.getLength(); ++indexElem) { - final Element element = (Element) list.item(indexElem); - - final InstanceEngine instanceConf = new InstanceEngine(); - - // read every configuration. - final String instanceName = element - .getAttribute(NODE_INST_NAME); - - if (StringUtils.isBlank(instanceName)) { - throw new STORKSAMLEngineRuntimeException( - "Error reader instance name."); - } - instanceConf.setName(instanceName.trim()); - - final NodeList confNodes = element - .getElementsByTagName(NODE_CONF); - - for (int indexNode = 0; indexNode < confNodes.getLength(); ++indexNode) { - - final Element configurationNode = (Element) confNodes - .item(indexNode); - - final String configurationName = configurationNode - .getAttribute(NODE_CONF_NAME); - - if (StringUtils.isBlank(configurationName)) { - throw new STORKSAMLEngineRuntimeException( - "Error reader configuration name."); - } - - final ConfigurationEngine confSamlEngine = - new ConfigurationEngine(); - - // Set configuration name. - confSamlEngine.setName(configurationName.trim()); - - // Read every parameter for this configuration. - final Map parameters = - generateParam(configurationNode); - - // Set parameters - confSamlEngine.setParameters(parameters); - - // Add parameters to the configuration. - instanceConf.getConfiguration().add(confSamlEngine); - } - - // Add to the list of configurations. - instanceConfs.put(element.getAttribute(NODE_INST_NAME), - instanceConf); - } - - } catch (SAXException e) { - LOGGER.error("Error: init library parser."); - throw new SAMLEngineException(e); - } catch (ParserConfigurationException e) { - LOGGER.error("Error: parser configuration file xml."); - throw new SAMLEngineException(e); - } catch (IOException e) { - LOGGER.error("Error: read configuration file."); - throw new SAMLEngineException(e); - } finally { - IOUtils.closeQuietly(engineConf); - } - - return instanceConfs; - } - - /** - * Instantiates a new configuration reader. - */ - private ConfigurationReader() { - - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java deleted file mode 100644 index d00607853..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.configuration; - -import java.util.Map; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.exceptions.SAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineException; -import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; - -/** - * The Class InstanceCreator. - * - * @author fjquevedo - */ -public final class ConfigurationSingleton { - - /** The instance of every engine SAML. */ - private static Map instanceConfigs; - - /** The instances of SAML engine. */ - private static Map> instances; - - /** The Constant LOGGER. */ - private static final Logger LOGGER = LoggerFactory - .getLogger(ConfigurationSingleton.class.getName()); - - static { - LOGGER.debug("Read all file configurations. (instances of SAMLEngine)"); - try { - instanceConfigs = ConfigurationReader.readConfiguration(); - } catch (SAMLEngineException e) { - LOGGER.error("Error read configuration file."); - throw new STORKSAMLEngineRuntimeException(e); - } - } - - /** - * Gets the new instance. - * - * @param fileName the file name - * - * @return the properties from the new instance - * - * @throws STORKSAMLEngineException the STORKSAML engine runtime exception - */ - private static Map> getInstance( - final String fileName) throws STORKSAMLEngineException { - return ConfigurationCreator.createConfiguration(instanceConfigs); - } - - /** - * Instantiates a new instance creator. - */ - private ConfigurationSingleton() { - } - -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/InstanceEngine.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/InstanceEngine.java deleted file mode 100644 index 4d9bba8e7..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/InstanceEngine.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.configuration; - -import java.util.ArrayList; -import java.util.List; - -/** - * The Class InstanceConfiguration. - * - * @author fjquevedo - */ -public class InstanceEngine { - - /** The configuration. */ - private List configuration = new ArrayList(); - - /** The name. */ - private String name; - - /** - * Gets the parameters. - * - * @return the parameters - */ - public final List getConfiguration() { - return this.configuration; - } - - /** - * Gets the name. - * - * @return the name - */ - public final String getName() { - return name; - } - - /** - * Sets the parameters. - * - * @param newConfiguration the new parameters - */ - public final void setConfiguration(final List newConfiguration) { - this.configuration = newConfiguration; - } - - /** - * Sets the name. - * - * @param newName the new name - */ - public final void setName(final String newName) { - this.name = newName; - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/package-info.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/package-info.java deleted file mode 100644 index 344368e03..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/configuration/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Provides the classes necessary to create a SAML message instance. - */ -package eu.stork.peps.configuration; diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java deleted file mode 100644 index ac46f73e4..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.exceptions; - -/** - * The Class SAMLEngineException. - * - * @author fjquevedo - */ -public class SAMLEngineException extends Exception { - - /** The Constant serialVersionUID. */ - private static final long serialVersionUID = 2611361164977849837L; - - /** - * Instantiates a new SAMLEngine exception. - * - * @param wrappedException the wrapped exception - */ - public SAMLEngineException(final Exception wrappedException) { - super(wrappedException); - } - - /** - * Instantiates a new SAMLEngine exception. - * - * @param message the message - */ - public SAMLEngineException(final String message) { - super(message); - } - - /** - * Instantiates a new SAMLEngine exception. - * - * @param message the message - * @param wrappedException the wrapped exception - */ - public SAMLEngineException(final String message, - final Exception wrappedException) { - super(message, wrappedException); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java deleted file mode 100644 index bddcbd1b3..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.exceptions; - -/** - * The Class STORKSAMLEngineException. - * - * @author fjquevedo - */ -public class STORKSAMLEngineException extends Exception { - - /** The Constant serialVersionUID. */ - private static final long serialVersionUID = -8319723167019122930L; - - /** The error code. */ - private String errorCode; - - /** The error detail. */ - private String errorDetail; - - /** - * Instantiates a new sTORKSAML engine exception. - * - * @param wrappedException the wrapped exception - */ - public STORKSAMLEngineException(final Exception wrappedException) { - super(wrappedException); - } - - /** - * Instantiates a new sTORKSAML engine exception. - * - * @param errorMessage the error message - */ - public STORKSAMLEngineException(final String errorMessage) { - super(errorMessage); - } - - /** - * Instantiates a new sTORKSAML engine exception. - * - * @param message the message - * @param wrappedException the wrapped exception - */ - public STORKSAMLEngineException(final String message, - final Exception wrappedException) { - super(message, wrappedException); - } - - /** - * Instantiates a new sTORKSAML engine exception. - * - * @param newErrorCode the error code - * @param errorMessage the error message - * @param newErrorDetail the error detail - */ - public STORKSAMLEngineException(final String newErrorCode, - final String errorMessage, final String newErrorDetail) { - super(errorMessage); - this.errorCode = newErrorCode; - this.errorDetail = newErrorDetail; - } - - /** - * Gets the error code. - * - * @return the error code - */ - public final String getErrorCode() { - return this.errorCode; - } - - /** - * Gets the error detail. - * - * @return the error detail - */ - public final String getErrorDetail() { - return errorDetail; - } - - /** - * Gets the error message. - * - * @return the error message - */ - public final String getErrorMessage() { - return super.getMessage(); - } - - - /** - * Gets the message. - * - * @return the message of the exception. - * - * @see java.lang.Throwable#getMessage() - */ - public final String getMessage() { - return "Error (no. " + errorCode + ") processing request : " - + super.getMessage(); - } - - /** - * Sets the error code. - * - * @param newErrorCode the new error code - */ - public final void setErrorCode(final String newErrorCode) { - this.errorCode = newErrorCode; - } - - /** - * Sets the error detail. - * - * @param newErrorDetail the new error detail - */ - public final void setErrorDetail(final String newErrorDetail) { - this.errorDetail = newErrorDetail; - } - -} diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java deleted file mode 100644 index fb01fd5aa..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.exceptions; - -/** - * The Class STORKSAMLEngineRuntimeException. - * - * @author fjquevedo - */ -public class STORKSAMLEngineRuntimeException extends RuntimeException { - - /** The Constant serialVersionUID. */ - private static final long serialVersionUID = 5829810358581493517L; - - /** - * Instantiates a new sTORKSAML engine runtime exception. - * - * @param wrappedException the wrapped exception - */ - public STORKSAMLEngineRuntimeException(final Exception wrappedException) { - super(wrappedException); - } - - /** - * Creates a new instance of application exception. - * - * @param cause the exception cause. - */ - public STORKSAMLEngineRuntimeException(final String cause) { - super(cause); - } - - /** - * Instantiates a new sTORKSAML engine runtime exception. - * - * @param message the message - * @param wrappedException the wrapped exception - */ - public STORKSAMLEngineRuntimeException(final String message, - final Exception wrappedException) { - super(message, wrappedException); - } -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/package-info.java b/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/package-info.java deleted file mode 100644 index 0c7341995..000000000 --- a/id/server/SamlEngine-VIDP/src/main/java/eu/stork/peps/exceptions/package-info.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Provides the classes for STORK exceptions management. - */ -package eu.stork.peps.exceptions; \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java deleted file mode 100644 index eb885eea9..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.test.simple; - -import java.io.IOException; -import java.io.InputStream; -import java.io.StringWriter; - -import javax.xml.XMLConstants; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.OutputKeys; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.io.IOUtils; -import org.bouncycastle.util.encoders.Base64; -import org.opensaml.Configuration; -import org.opensaml.xml.XMLObject; -import org.opensaml.xml.io.Marshaller; -import org.opensaml.xml.io.MarshallerFactory; -import org.opensaml.xml.io.MarshallingException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -/** - * The Class SSETestUtils. - */ -public final class SSETestUtils { - - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(SSETestUtils.class.getName()); - - /** - * Instantiates a new sSE test utils. - */ - private SSETestUtils() { - } - - /** - * Prints the tree DOM. - * - * @param samlToken the SAML token - * @param isIndent the is indent - * - * @return the string - * @throws TransformerException the exception - */ - public static String printTreeDOM(final Element samlToken, final boolean isIndent) throws TransformerException { - // set up a transformer - final TransformerFactory transfac = TransformerFactory.newInstance(); - final Transformer trans = transfac.newTransformer(); - trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); - trans.setOutputProperty(OutputKeys.INDENT, String.valueOf(isIndent)); - - // create string from XML tree - final StringWriter stringWriter = new StringWriter(); - final StreamResult result = new StreamResult(stringWriter); - final DOMSource source = new DOMSource(samlToken); - trans.transform(source, result); - final String xmlString = stringWriter.toString(); - - return xmlString; - } - - /** - * Marshall. - * - * @param samlToken the SAML token - * - * @return the byte[] - * - * @throws MarshallingException the marshalling exception - * @throws ParserConfigurationException the parser configuration exception - * @throws TransformerException the transformer exception - */ - public static byte[] marshall(final XMLObject samlToken) - throws MarshallingException, ParserConfigurationException, - TransformerException { - - final javax.xml.parsers.DocumentBuilderFactory dbf = javax.xml.parsers.DocumentBuilderFactory - .newInstance(); - dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - dbf.setNamespaceAware(true); - dbf.setIgnoringComments(true); - final javax.xml.parsers.DocumentBuilder docBuild = dbf - .newDocumentBuilder(); - - // Get the marshaller factory - final MarshallerFactory marshallerFactory = Configuration - .getMarshallerFactory(); - - // Get the Subject marshaller - final Marshaller marshaller = marshallerFactory - .getMarshaller(samlToken); - - final Document doc = docBuild.newDocument(); - - // Marshall the SAML token - marshaller.marshall(samlToken, doc); - - // Obtain a byte array representation of the marshalled SAML object - final DOMSource domSource = new DOMSource(doc); - final StringWriter writer = new StringWriter(); - final StreamResult result = new StreamResult(writer); - final TransformerFactory transFact = TransformerFactory.newInstance(); - final Transformer transformer = transFact.newTransformer(); - transformer.transform(domSource, result); - - return writer.toString().getBytes(); - } - - /** - * Encode SAML token. - * - * @param samlToken the SAML token - * - * @return the string - */ - public static String encodeSAMLToken(final byte[] samlToken) { - return new String(Base64.encode(samlToken)); - } - - /** - * Read stork SAML from file. - * - * @param resource the resource - * - * @return the byte[] - * @throws IOException the exception - * - */ - public static byte[] readStorkSamlFromFile(final String resource) - throws IOException { - InputStream inputStream = null; - byte[] bytes; - - try { - inputStream = StorkAuthRequestTest.class - .getResourceAsStream(resource); - - // Create the byte array to hold the data - bytes = new byte[(int) inputStream.available()]; - inputStream.read(bytes); - } catch (IOException e) { - LOG.error("Error read from file: " + resource); - throw e; - } finally { - IOUtils.closeQuietly(inputStream); - } - return bytes; - - } -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java deleted file mode 100644 index c52b8a779..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.test.simple; - -import org.junit.Test; - -import junit.framework.Assert; -import junit.framework.TestCase; -import eu.stork.peps.auth.engine.STORKSAMLEngine; - -/** - * The Class SimpleBaseTest. Defines a set of test the initialization of the - * SAML engine. - */ -@SuppressWarnings("deprecation") -public class SimpleBaseTest extends TestCase { - - /** - * Test SAML engine correct configuration name. - */ - - @Test - public final void testSamlEngineCorrectInit() { - Assert.assertNotNull(STORKSAMLEngine.getInstance("CONF1")); - } - - /** - * Test SAML engine error configuration name. - */ - @Test - public final void testSamlEngineErrorNameConf() { - Assert.assertNull(STORKSAMLEngine.getInstance("CONF_ERROR")); - } - - /** - * Test SAML engine error name null. - */ - @Test - public final void testSamlEngineErrorNameNull() { - Assert.assertNull(STORKSAMLEngine.getInstance(null)); - } - - /** - * Test SAML engine correct name configuration with spaces. - */ - @Test - public final void testSamlEngineErrorNameSpaces() { - Assert.assertNotNull(STORKSAMLEngine.getInstance(" CONF1 ")); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java deleted file mode 100644 index 0eda1bfbf..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java +++ /dev/null @@ -1,864 +0,0 @@ -package eu.stork.peps.test.simple; - -import static org.junit.Assert.*; - -import java.io.*; -import java.util.ArrayList; -import java.util.Arrays; - -import org.junit.Ignore; -import org.junit.Test; -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -import eu.stork.peps.auth.commons.STORKAttrQueryRequest; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - -public class StorkAttrQueryRequestTest { - - /** The engines. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); - private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); - private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); - - - /** - * Instantiates a new stork authentication request test. - */ - public StorkAttrQueryRequestTest() { - pal = new PersonalAttributeList(); - - final PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - final ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - pal.add(isAgeOver); - - final PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - pal.add(dateOfBirth); - - final PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - eIDNumber.setValue(Arrays.asList("ES/IS/1234567890")); - pal.add(eIDNumber); - - final PersonalAttribute givenName = new PersonalAttribute(); - givenName.setName("givenName"); - givenName.setIsRequired(true); - givenName.setValue(Arrays.asList("Sveinbjorn")); - pal.add(givenName); - - destination = "http://A-PEPS.gov.xx/PEPS/AttributeColleagueRequest"; - assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; - //spName = "University of Oxford"; - spSector = "EDU001"; - spInstitution = "OXF001"; - spApplication = "APP001"; - spCountry = "IS"; - - spId = "EDU001-OXF001-APP001"; - - } - - /** The destination. */ - private String destination; - - /** The service provider sector. */ - private String spSector; - - /** The service provider institution. */ - private String spInstitution; - - /** The service provider application. */ - private String spApplication; - - /** The service provider country. */ - private String spCountry; - - /** The service provider id. */ - private String spId; - - /** The assertion consumer URL. */ - private String assertConsumerUrl; - - /** The quality authentication assurance level. */ - private static final int QAAL = 3; - - /** The List of Personal Attributes. */ - private IPersonalAttributeList pal; - - /** The attribute query request. */ - private static byte[] attrRequest; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkAttrQueryRequestTest.class.getName()); - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - } - - /** - * Test generate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAttrQueryRequest() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - // new parameters - request.setEIDSectorShare(false); - request.setEIDCrossSectorShare(false); - request.setEIDCrossBorderShare(false); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - request.setSpCountry(spCountry); - - STORKAttrQueryRequest req1 = engine0.generateSTORKAttrQueryRequest(request); - byte[] reqByte = req1.getTokenSaml(); - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(reqByte); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LOG.info("STORKAttrQueryRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); - - request.setCitizenCountryCode("IS"); - LOG.info("STORKAttrQueryRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); - } - - /** - * Test generate authentication request error personal attribute name error. - */ - @Test - public final void testGenerateAttrQueryRequestPALsErr1() { - - final IPersonalAttributeList palWrong = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("attrNotValid"); - worngAttr.setIsRequired(true); - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(palWrong); - - // news parameters - request.setEIDSectorShare(false); - request.setEIDCrossSectorShare(false); - request.setEIDCrossBorderShare(false); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - - /** - * Test generate authentication request error personal attribute value error. - */ - @Test - public final void testGenerateAttrQueryRequestPALsErr2() { - - final IPersonalAttributeList palWrong = new PersonalAttributeList(); - - final PersonalAttribute attrNotValid = new PersonalAttribute(); - attrNotValid.setName("attrNotValid"); - attrNotValid.setIsRequired(true); - palWrong.add(attrNotValid); - - - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(palWrong); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request authentication assurance level - * negative value. - */ - @Test - public final void testGenerateAttrQueryRequestQaalErr1() { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(-1); - request.setPersonalAttributeList(pal); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request service provider sector null. - */ - @Test - public final void testGenerateAttrQueryRequestSectorErr() { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(null); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - - } - } - - /** - * Test generate authentication request service provider institution null. - */ - @Test - public final void testGenerateAttrQueryRequestDestinationErr() { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(null); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(null); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAttrQueryRequest(...) should've thrown an STORKSAMLEngineException!"); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request service provider application null. - */ - @Test - public final void testGenerateAttrQueryRequestApplicationErr() { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(null); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } - } - - /** - * Test generate authentication request service provider country null. - */ - @Test - public final void testGenerateAttrQueryRequestCountryErr() { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(null); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request error with quality authentication - * assurance level wrong. - */ - @Test - public final void testGenerateAttrQueryRequestQaalErr2() { - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(0); - request.setPersonalAttributeList(pal); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request personal attribute list null value. - */ - @Test - public final void testGenerateAttrQueryRequestPALErr1() { - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(null); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - engine.generateSTORKAttrQueryRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request null parameter. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryRequestNullParam() - throws STORKSAMLEngineException { - try { - engine.validateSTORKAttrQueryRequest(null); - fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request error bytes encode. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryRequestErrorEncode() - throws STORKSAMLEngineException { - try { - engine.validateSTORKAttrQueryRequest("messageError".getBytes()); - fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryRequest() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - attrRequest = engine.generateSTORKAttrQueryRequest(request).getTokenSaml(); - - final STORKAttrQueryRequest validatedRequest = engine.validateSTORKAttrQueryRequest(attrRequest); - - assertEquals("CrossBorderShare incorrect: ", validatedRequest.isEIDCrossBorderShare(), false); - assertEquals("CrossSectorShare incorrect: ", validatedRequest.isEIDCrossSectorShare(), false); - assertEquals("SectorShare incorrect: ", validatedRequest.isEIDSectorShare(), false); - - } - - /** - * Test validate data authenticate request. Verified parameters after - * validation. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateDataAttrQueryRequest() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = engine.validateSTORKAttrQueryRequest(attrRequest); - - assertEquals("Sestination incorrect: ", request.getDestination(), destination); - - assertEquals("CrossBorderShare incorrect: ", request.isEIDCrossBorderShare(), false); - assertEquals("CrossSectorShare incorrect: ", request.isEIDCrossSectorShare(), false); - assertEquals("SectorShare incorrect: ", request.isEIDSectorShare(), false); - - assertEquals("QAAL incorrect: ", request.getQaa(), QAAL); - assertEquals("SPSector incorrect: ", request.getSpSector(), spSector); - assertEquals("SPInstitution incorrect: ", request.getSpInstitution(), null); - assertEquals("SPApplication incorrect: ", request.getSpApplication(), spApplication); - assertEquals("CitizenCountryCode incorrect: ", request.getCitizenCountryCode(), null); - - } - - /** - * Test validate file attribute query request. Validate from XML file. - * - * @throws Exception the exception - */ - @Test - public final void testValidateFileAttrQueryRequest() throws Exception { - - final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AttrQueryRequest1.xml"); - - try { - engine.validateSTORKAttrQueryRequest(bytes); - fail("testValidateFileAttrQueryRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error(e.getMessage()); - } - } - - /** - * Test validate file authentication request tag delete. - * - * @throws Exception the exception - */ - @Test - public final void testValidateFileAttrRequestTagDelete() throws Exception { - - final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml"); - - try { - engine.validateSTORKAttrQueryRequest(bytes); - fail("validateSTORKAttrQueryRequest(...) should have thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error(e.getMessage()); - - } - } - - /** - * Test validate authentication request not trusted token. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryRequestNotTrustedErr1() - throws STORKSAMLEngineException { - - try { - final STORKSAMLEngine engineNotTrusted = STORKSAMLEngine - .getInstance("CONF2"); - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - - final byte[] authReqNotTrust = engineNotTrusted - .generateSTORKAttrQueryRequest(request).getTokenSaml(); - - engine.validateSTORKAttrQueryRequest(authReqNotTrust); - fail("validateSTORKAttrQueryRequestNotTrusted(...) should have thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request trusted. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryRequestTrusted() - throws STORKSAMLEngineException { - - final STORKSAMLEngine engineTrusted = STORKSAMLEngine - .getInstance("CONF3"); - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - final byte[] authReqNotTrust = engineTrusted.generateSTORKAttrQueryRequest( - request).getTokenSaml(); - - // engine ("CONF1") no have trust certificate from "CONF2" - engine.validateSTORKAttrQueryRequest(authReqNotTrust); - - } - - - - - /** - * Test generate authentication request service provider application null. - */ - @Test - public final void testGenerateAttrQueryRequestNADA() { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - // news parameters - request.setSpSector(null); - request.setSpInstitution(null); - request.setSpApplication(null); - request.setSpCountry(null); - - try { - - engine.validateSTORKAttrQueryRequest(attrRequest); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } - } - - /** - * Test validate authentication request with unknown elements. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryRequestWithUnknownElements() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - IPersonalAttributeList pAttList = new PersonalAttributeList(); - - final PersonalAttribute unknown = new PersonalAttribute(); - unknown.setName("unknown"); - unknown.setIsRequired(true); - pAttList.add(unknown); - - final PersonalAttribute eIdentifier = new PersonalAttribute(); - eIdentifier.setName("eIdentifier"); - eIdentifier.setIsRequired(true); - pAttList.add(eIdentifier); - - request.setPersonalAttributeList(pAttList); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - STORKAttrQueryRequest req = new STORKAttrQueryRequest(); - - req = engine3.generateSTORKAttrQueryRequest(request); - - req = engine.validateSTORKAttrQueryRequest(req.getTokenSaml()); - - assertNull("The value shouldn't exist", req.getPersonalAttributeList().get("unknown")); - assertNotNull("The value should exist", req.getPersonalAttributeList().get("eIdentifier")); - - } - - /** - * Test generate Request with required elements by default - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAttrQueryRequestWithIsRequiredElementsByDefault() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - IPersonalAttributeList pAttList = new PersonalAttributeList(); - - final PersonalAttribute eIdentifier = new PersonalAttribute(); - eIdentifier.setName("eIdentifier"); - eIdentifier.setIsRequired(true); - pAttList.add(eIdentifier); - - request.setPersonalAttributeList(pAttList); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - STORKAttrQueryRequest req = new STORKAttrQueryRequest(); - STORKAttrQueryRequest reqTrue = new STORKAttrQueryRequest(); - STORKAttrQueryRequest reqFalse = new STORKAttrQueryRequest(); - - reqTrue = engine.generateSTORKAttrQueryRequest(request); - reqFalse = engine2.generateSTORKAttrQueryRequest(request); - req = engine3.generateSTORKAttrQueryRequest(request); - - - String token = new String(req.getTokenSaml()); - String reqTrueToken = new String(reqTrue.getTokenSaml()); - String reqFalseToken = new String(reqFalse.getTokenSaml()); - - assertTrue("The token must contain the chain 'isRequired'", token.contains("isRequired")); - assertTrue("The token must contain the chain 'isRequired'", reqTrueToken.contains("isRequired")); - assertFalse("The token must contain the chain 'isRequired'", reqFalseToken.contains("isRequired")); - - } - - /** - * Test validating attribute query and getting alias used to save - * the saml trusted certificate into trustore - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - /*@Test - public final void testValidateAtrrQueryRequestGettingItsAlias() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - - IPersonalAttributeList pAttList = new PersonalAttributeList(); - - final PersonalAttribute eIdentifier = new PersonalAttribute(); - eIdentifier.setName("eIdentifier"); - eIdentifier.setIsRequired(true); - pAttList.add(eIdentifier); - - request.setPersonalAttributeList(pAttList); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - STORKAttrQueryRequest req = new STORKAttrQueryRequest(); - - req = engine3.generateSTORKAttrQueryRequest(request); - req = engine.validateSTORKAttrQueryRequest(req.getTokenSaml()); - String prufa = req.getAlias(); - assertTrue("The alias should match this value", req.getAlias().equals("local-demo")); - - req = engine2.generateSTORKAttrQueryRequest(request); - req = engine2.validateSTORKAttrQueryRequest(req.getTokenSaml()); - assertTrue("The alias should match this value", req.getAlias().equals("local-demo2")); - }*/ - - @Test - public final void testGenerateAttrQueryRequestSignDoc() throws STORKSAMLEngineException { - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - - request.setDestination(destination); - request.setQaa(QAAL); - PersonalAttributeList pal0 = new PersonalAttributeList(); - - final PersonalAttribute signDoc = new PersonalAttribute(); - signDoc.setName("docRequest"); - signDoc.setIsRequired(true); - signDoc.setValue(Arrays.asList("IS/IS/fbea6e68-0393-401b-b616-f767fff9418c")); - pal0.add(signDoc); - - request.setPersonalAttributeList(pal0); - - // new parameters - /*request.setEIDSectorShare(false); - request.setEIDCrossSectorShare(false); - request.setEIDCrossBorderShare(false);*/ - request.setAssertionConsumerServiceURL(assertConsumerUrl); - request.setSpCountry(spCountry); - - STORKAttrQueryRequest req1 = engine0.generateSTORKAttrQueryRequest(request); - byte[] reqByte = req1.getTokenSaml(); - FileOutputStream output = null; - - STORKAttrQueryRequest req2 = engine0.validateSTORKAttrQueryRequest(reqByte); - //reqByte = req2.getTokenSaml(); - - try { - //output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml")); - FileOutputStream fos; - File outputDir = new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine"); - File saveFile = new File(outputDir, "AttrQueryRequestSdoc.xml"); - fos = new FileOutputStream(saveFile); - fos.write(reqByte); - fos.flush(); - fos.close(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(reqByte); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LOG.info("STORKAttrQueryRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); - - request.setCitizenCountryCode("IS"); - LOG.info("STORKAttrQueryRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java deleted file mode 100644 index a98d5b7c3..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java +++ /dev/null @@ -1,1085 +0,0 @@ -package eu.stork.peps.test.simple; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import org.junit.Ignore; -import org.junit.Test; -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.PEPSUtil; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -import eu.stork.peps.auth.commons.STORKAttrQueryRequest; -import eu.stork.peps.auth.commons.STORKAttrQueryResponse; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import eu.stork.peps.auth.commons.STORKAuthnResponse; -import eu.stork.peps.auth.commons.STORKStatusCode; -import eu.stork.peps.auth.commons.STORKSubStatusCode; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - -public class StorkAttrQueryResponseTest { - - /** The engine. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - - /** - * Gets the engine. - * - * @return the engine - */ - public static STORKSAMLEngine getEngine() { - return engine; - } - - /** - * Sets the engine. - * - * @param newEngine the new engine - */ - public static void setEngine(final STORKSAMLEngine newEngine) { - StorkAttrQueryResponseTest.engine = newEngine; - } - - /** The destination. */ - private static String destination; - - /** The service provider sector. */ - private static String spSector; - - /** The service provider institution. */ - private static String spInstitution; - - /** The service provider application. */ - private static String spApplication; - - /** The service provider country. */ - private static String spCountry; - - /** The service provider id. */ - private static String spId; - - /** The quality authentication assurance level. */ - private static final int QAAL = 3; - - /** The state. */ - private static String state = "IS"; - - /** The town. */ - private static String town = "Reykjavik"; - - /** The postal code. */ - private static String postalCode = "105"; - - /** The street name. */ - private static String streetName = "Gudrunartun"; - - /** The street number. */ - private static String streetNumber = "10"; - - /** The List of Personal Attributes. */ - private static IPersonalAttributeList pal; - - /** The assertion consumer URL. */ - private static String assertConsumerUrl; - - /** The attribute query request. */ - private static byte[] attrQueryRequest; - - /** The attribute query response. */ - private static byte[] attrQueryResponse; - - /** The attribute query request. */ - private static STORKAttrQueryRequest attrQueryenRequest; - - /** The attribute query response. */ - private static STORKAttrQueryResponse attrQeuryenResponse; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkAttrQueryResponseTest.class.getName()); - - /** - * Instantiates a new stork response test. - */ - public StorkAttrQueryResponseTest() { - super(); - } - - /** The IP address. */ - private static String ipAddress; - - /** The destination URL. */ - private static String destinationUrl; - - /** The is hashing. */ - private final boolean isHashing = Boolean.TRUE; - - /** The is not hashing. */ - private final boolean isNotHashing = Boolean.FALSE; - - /** The ERROR text. */ - private static final String ERROR_TXT = "generateAttrQueryResponse(...) should've thrown an STORKSAMLEngineException!"; - - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - - pal = new PersonalAttributeList(); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(false); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - pal.add(isAgeOver); - - PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - pal.add(dateOfBirth); - - PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - List eid = Arrays.asList("IS/IS/1234567890"); - eIDNumber.setValue(eid); - eIDNumber.setIsRequired(true); - pal.add(eIDNumber); - - final PersonalAttribute givenName = new PersonalAttribute(); - givenName.setName("givenName"); - givenName.setIsRequired(true); - pal.add(givenName); - - PersonalAttribute canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - pal.add(canRessAddress); - - PersonalAttribute newAttribute = new PersonalAttribute(); - newAttribute.setName("newAttribute2"); - newAttribute.setIsRequired(true); - pal.add(newAttribute); - - destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; - spSector = "EDU001"; - spInstitution = "OXF001"; - spApplication = "APP001"; - spCountry = "EN"; - - spId = "EDU001-APP001-APP001"; - - final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); - request.setDestination(destination); - //request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("IS"); - - try { - attrQueryRequest = getEngine().generateSTORKAttrQueryRequest(request) - .getTokenSaml(); - - attrQueryenRequest = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); - - } catch (STORKSAMLEngineException e) { - fail("Error create STORKAuthnRequest"); - } - - ipAddress = "111.222.333.444"; - - destinationUrl = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - - pal = new PersonalAttributeList(); - - isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - ages = new ArrayList(); - - ages.add("16"); - ages.add("18"); - - isAgeOver.setValue(ages); - isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(isAgeOver); - - dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - final ArrayList date = new ArrayList(); - date.add("16/12/2008"); - dateOfBirth.setValue(date); - dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(dateOfBirth); - - eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - final ArrayList idNumber = new ArrayList(); - idNumber.add("123456789IS"); - eIDNumber.setValue(idNumber); - eIDNumber.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(eIDNumber); - - canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap address = new HashMap(); - - address.put("state", state); - address.put("town", town); - address.put("postalCode", postalCode); - address.put("streetName", streetName); - address.put("streetNumber", streetNumber); - - canRessAddress.setComplexValue(address); - pal.add(canRessAddress); - - newAttribute = new PersonalAttribute(); - newAttribute.setName("newAttribute2"); - newAttribute.setIsRequired(true); - newAttribute.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap values = new HashMap(); - - values.put("value1", "value1"); - values.put("value2", "value2"); - values.put("value3", "value3"); - values.put("value4", "value4"); - - newAttribute.setComplexValue(values); - pal.add(newAttribute); - - } - - /** - * Test generate attribute query request without errors. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAttrQueryResponse() throws STORKSAMLEngineException { - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(pal); - - final STORKAttrQueryResponse storkResponse = getEngine() - .generateSTORKAttrQueryResponse(attrQueryenRequest, response, ipAddress, - destinationUrl, isNotHashing); - - attrQueryResponse = storkResponse.getTokenSaml(); - - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(attrQueryResponse); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(attrQueryResponse)); - - - } - - /** - * Test validation id parameter mandatory. - */ - @Test - public final void testResponseMandatoryId() { - final String identifier = attrQueryenRequest.getSamlId(); - attrQueryenRequest.setSamlId(null); - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(pal); - - try { - getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, - ipAddress, destinationUrl, isHashing); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - attrQueryenRequest.setSamlId(identifier); - LOG.error("Error"); - } - } - - /** - * Test generate attribute query response in response to err1. - */ - @Test - public final void testResponseMandatoryIssuer() { - - final String issuer = attrQueryenRequest.getIssuer(); - attrQueryenRequest.setIssuer(null); - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(pal); - - try { - getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, - ipAddress, destinationUrl, isHashing); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - attrQueryenRequest.setIssuer(issuer); - LOG.error("Error"); - } - } - - - /** - * Test generate attribute query response assertion consumer null. - */ - /*@Test - public final void testResponseMandatoryAssertionConsumerServiceURL() { - final String asserConsumerUrl = attrQueryenRequest - .getAssertionConsumerServiceURL(); - attrQueryenRequest.setAssertionConsumerServiceURL(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - try { - getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, - ipAddress, isHashing); - fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - attrQueryenRequest.setAssertionConsumerServiceURL(asserConsumerUrl); - LOG.error("Error"); - } - } - - /** - * Test generate attribute query response IP address null. - */ - @Test - public final void testResponseValidationIP() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(pal); - - try { - getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, null, - destinationUrl, isHashing); - fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate attribute query response with personal attribute list null. - */ - @Test - public final void testResponseMandatoryPersonalAttributeList() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(null); - - - try { - getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, - ipAddress, destinationUrl, isHashing); - fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate attribute query response token null. - */ - @Test - public final void testResponseInvalidParametersToken() { - try { - getEngine().validateSTORKAttrQueryResponse(null, ipAddress); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate attribute query response IP null. - */ - @Test - public final void STORKAttrQueryResponse() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(pal); - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate attribute query response parameter name wrong. - */ - @Test - public final void testResponseInvalidParametersAttr() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("AttrWrong"); - wrongList.add(worngAttr); - - - response.setPersonalAttributeList(wrongList); - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate attribute query response set null value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrSimpleValue() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("isAgeOver"); - worngAttr.setValue(null); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate attribute query response set null value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrNoValue() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("isAgeOver"); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate attribute query response set null value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrNoName() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate attribute query response set null complex value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrComplexValue() { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("isAgeOver"); - worngAttr.setComplexValue(null); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - - - /** - * Test validate attribute query response IP distinct and disabled validation - * IP. - */ - @Test - public final void testResponseInvalidParametersIPDistinct() { - try { - // ipAddress origin "111.222.333.444" - // ipAddrValidation = false - // Subject Confirmation Bearer. - - getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, "127.0.0.1"); - } catch (STORKSAMLEngineException e) { - fail("validateAttributeQueryResponse(...) should've thrown an STORKSAMLEngineException!"); - LOG.error("Error"); - } - } - - /** - * Test response invalid parameters invalid token. - */ - @Test - public final void testResponseInvalidParametersTokenMsg() { - try { - // ipAddress origin "111.222.333.444" - // Subject Confirmation Bearer. - getEngine().validateSTORKAttrQueryResponse("errorMessage".getBytes(), - ipAddress); - fail("validateAuthenticationResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate attribute query response is fail. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - /*@Test - public final void testValidateAuthenticationResponseIsFail() - throws STORKSAMLEngineException { - attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, - ipAddress); - - assertFalse("Generate incorrect response: ", attrQeuryenResponse.isFail()); - } - - /** - * Test validate attribute query response destination. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthenticationResponseDestination() - throws STORKSAMLEngineException { - attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, - ipAddress); - - assertEquals("Destination incorrect: ", - attrQeuryenResponse.getInResponseTo(), attrQueryenRequest.getSamlId()); - } - - /** - * Test validate attribute query response values. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthenticationResponseValuesComplex() - throws STORKSAMLEngineException { - attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, - ipAddress); - - assertEquals("Country incorrect:", attrQeuryenResponse.getCountry(), "ES"); - - final Iterator iterator = attrQeuryenResponse - .getPersonalAttributeList().iterator(); - - while (iterator.hasNext()) { - final PersonalAttribute attribute = iterator.next(); - if (attribute.getName().equalsIgnoreCase( - "canonicalResidenceAddress")) { - assertEquals("State incorrect: ", state, attribute - .getComplexValue().get("state")); - assertEquals("Town incorrect: ", town, attribute - .getComplexValue().get("town")); - assertEquals("Postal code incorrect: ", postalCode, attribute - .getComplexValue().get("postalCode")); - assertEquals("Street name incorrect: ", streetName, attribute - .getComplexValue().get("streetName")); - assertEquals("Street number incorrect: ", streetNumber, - attribute.getComplexValue().get("streetNumber")); - } - } - } - - /** - * Test generate attribute query response fail in response to it's null. - * @throws STORKSAMLEngineException - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test //( expected=STORKSAMLEngineException.class) - public final void testGenerateAttrQueryResponseFailInResponseToNull() throws STORKSAMLEngineException { - final String identifier = attrQueryenRequest.getSamlId(); - attrQueryenRequest.setSamlId(null); - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage(""); - - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponseFail(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - attrQueryenRequest.setSamlId(identifier); - LOG.error("Error"); - //throw new STORKSAMLEngineException(e); - } - } - - /** - * Test generate attribute query response fail assertion consumer URL err1. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - /*@Test - public final void testGenerateAuthnResponseFailAssertionConsumerUrlNull() - throws STORKSAMLEngineException { - - final String assertConsumerUrl = attrQueryenRequest - .getAssertionConsumerServiceURL(); - attrQueryenRequest.setAssertionConsumerServiceURL(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage(""); - - try { - attrQueryResponse = getEngine().generateSTORKAuthnResponseFail(attrQueryenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - fail("generateAuthnResponseFail(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - attrQueryenRequest.setAssertionConsumerServiceURL(assertConsumerUrl); - LOG.error("Error"); - } - } - - /** - * Test generate attribute query response fail code error err1. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAttrQueryResponseFailCodeErrorNull() - throws STORKSAMLEngineException { - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setStatusCode(null); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage(""); - - try { - attrQueryResponse = getEngine().generateSTORKAttrQueryResponseFail(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - fail("generateAttrQueryResponseFail(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - - - /** - * Test generate attribute query request without errors. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryResponse() throws STORKSAMLEngineException { - - IPersonalAttributeList palist = new PersonalAttributeList(); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - palist.add(isAgeOver); - - PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - final ArrayList date = new ArrayList(); - date.add("16/12/2008"); - dateOfBirth.setValue(date); - dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - palist.add(dateOfBirth); - - - PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - - final ArrayList idNumber = new ArrayList(); - idNumber.add("123456789PÑ"); - - final HashMap complex = new HashMap(); - complex.put("one", "two"); - - //eIDNumber.setValue(null); - //eIDNumber.setValue(idNumber); - //eIDNumber.setComplexValue(complex); - - eIDNumber.setStatus(STORKStatusCode.STATUS_NOT_AVAILABLE.toString()); - palist.add(eIDNumber); - - PersonalAttribute canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap address = new HashMap(); - - address.put("state", state); - address.put("town", town); - address.put("postalCode", postalCode); - address.put("streetName", streetName); - address.put("streetNumber", streetNumber); - - canRessAddress.setComplexValue(address); - palist.add(canRessAddress); - - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - - response.setPersonalAttributeList(palist); - - final STORKAttrQueryResponse storkResponse = getEngine() - .generateSTORKAttrQueryResponse(attrQueryenRequest, response, ipAddress, - destinationUrl, isNotHashing); - - attrQueryResponse = storkResponse.getTokenSaml(); - LOG.info("Request id: " + attrQueryenRequest.getSamlId()); - - LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(attrQueryResponse)); - - - attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, - ipAddress); - - LOG.info("RESPONSE ID: " + attrQeuryenResponse.getSamlId()); - LOG.info("RESPONSE IN_RESPONSE_TO: " + attrQeuryenResponse.getInResponseTo()); - LOG.info("RESPONSE COUNTRY: " + attrQeuryenResponse.getCountry()); - - } - - - - - - /** - * Test validate attribute query response fail is fail. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAttrQueryResponseFailIsFail() - throws STORKSAMLEngineException { - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage("message"); - - attrQueryResponse = getEngine().generateSTORKAttrQueryResponseFail(attrQueryenRequest, - response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); - - LOG.error("ERROR_FAIL: " + PEPSUtil.encodeSAMLToken(attrQueryResponse)); - - attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, - ipAddress); - - LOG.info("COUNTRY: " + attrQeuryenResponse.getCountry()); - assertTrue("Generate incorrect response: ", attrQeuryenResponse.isFail()); - } - - /** - * Test generate/validate response with signedDoc - * - * @throws STORKSAMLEngineException - * the STORKSAML engine exception - */ - @Test - public final void testGenerateAttrQueryResponseWithSignedDoc() - throws STORKSAMLEngineException { - - String signedDocResponse = " urn:oasis:names:tc:dss:1.0:resultmajor:Success PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzOlJlZmVyZW5jZSBJZD0iUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjT2JqZWN0LTk4NzMzY2RlLThiY2MtNDhhMC05Yjc3LTBlOTk5N2JkZDA1OCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkNrMVZxTmQ0NVFJdnEzQVpkOFhZUUx2RWh0QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjxkczpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMyNTaWduZWRQcm9wZXJ0aWVzIiBVUkk9IiNTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5BNVk5MW40cXBMZ3l0VFc3ZnhqWENVZVJ2NTQ9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI1NpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItS2V5SW5mbyI+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPlZQWDRuS0Z5UzZyRitGNmNSUjBQck5aZHc2Zz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9IlNpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItU2lnbmF0dXJlVmFsdWUiPkxiS04vL0M3WGt5eFR0WVRpQ1VScjhuWnp4QW1zdGNNZDBDZ0VBQ3JLMWR5Z1JIcUdjSzR4dHMrV0NVOFB5RXFXclJJVFl6SXV3LzcNClY0Wno5VFQ2MHA0S1RNZXd1UUw2NHNrRVN4MllnMkVkaWtTTyt0S3hXa2hyYVVzbVZiR2JQbW1jbUR2OTd0SER3ODg3NDdlRnE1RjUNCnYrYVZTeUF6MDNpVUttdVNlSDg9PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbyBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1LZXlJbmZvIj48ZHM6S2V5VmFsdWU+PGRzOlJTQUtleVZhbHVlPjxkczpNb2R1bHVzPnd1Y21qOXRJV3J2d2JTVFVEZndLbCtKdERNTUVSMGNMZDZEa0JTcjc5MHQrckdOakVTcVlqUndFSWVCbktvUUhQeDVIb1JlRjg4L3QNCnFZOStDaEVYcExITHM5cDVhWDdTREp1YnBRTWZwMXRERlgzNHl3Z3hTUXZjZWVKUVdCWGppZXVJbWZDMjFzNGJPY2dKYlYxaGJpZ1MNCnpPS1RRS3IxVHpkR1IrdVJ5MDA9PC9kczpNb2R1bHVzPjxkczpFeHBvbmVudD5BUUFCPC9kczpFeHBvbmVudD48L2RzOlJTQUtleVZhbHVlPjwvZHM6S2V5VmFsdWU+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJSW1UQ0NCNEdnQXdJQkFnSURBWFVVTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUlCT3pFTE1Ba0dBMVVFQmhNQ1JWTXhPekE1QmdOVg0KQkFvVE1rRm5aVzVqYVdFZ1EyRjBZV3hoYm1FZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUNoT1NVWWdVUzB3T0RBeE1UYzJMVWtwTVRRdw0KTWdZRFZRUUhFeXRRWVhOellYUm5aU0JrWlNCc1lTQkRiMjVqWlhCamFXOGdNVEVnTURnd01EZ2dRbUZ5WTJWc2IyNWhNUzR3TEFZRA0KVlFRTEV5VlRaWEoyWldseklGQjFZbXhwWTNNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVWRFZpMHlNVFV3TXdZRFZRUUxFeXhXWldkbA0KZFNCb2RIUndjem92TDNkM2R5NWpZWFJqWlhKMExtNWxkQzkyWlhKRFNVTXRNaUFvWXlrd016RTFNRE1HQTFVRUN4TXNSVzUwYVhSaA0KZENCd2RXSnNhV05oSUdSbElHTmxjblJwWm1sallXTnBieUJrWlNCamFYVjBZV1JoYm5NeEd6QVpCZ05WQkFNVEVsQlNSVkJTVDBSVg0KUTBOSlR5QkpSRU5oZERBZUZ3MHhNREF5TVRFeE9ESXlNRFJhRncweE5EQXlNVEF4T0RJeU1EUmFNSUd3TVFzd0NRWURWUVFHRXdKRg0KVXpFMU1ETUdBMVVFQ3hNc1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5U1VSRFlYUWdLR01wTURNeA0KRmpBVUJnTlZCQVFURFVKRlVreEJUa2RCSUZOUFZFOHhGekFWQmdOVkJDb1REazFCVWtsQklFVk9SMUpCUTBsQk1SSXdFQVlEVlFRRg0KRXdreE1EQXdNRGswTkZNeEpUQWpCZ05WQkFNVEhFMUJVa2xCSUVWT1IxSkJRMGxCSUVKRlVreEJUa2RCSUZOUFZFOHdnWjh3RFFZSg0KS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNTG5Kby9iU0ZxNzhHMGsxQTM4Q3BmaWJRekRCRWRIQzNlZzVBVXErL2RMZnF4ag0KWXhFcW1JMGNCQ0hnWnlxRUJ6OGVSNkVYaGZQUDdhbVBmZ29SRjZTeHk3UGFlV2wrMGd5Ym02VURINmRiUXhWOStNc0lNVWtMM0huaQ0KVUZnVjQ0bnJpSm53dHRiT0d6bklDVzFkWVc0b0VzemlrMENxOVU4M1JrZnJrY3ROQWdNQkFBR2pnZ1N3TUlJRXJEQU1CZ05WSFJNQg0KQWY4RUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRm9EQ0J6QVlEVlIwUkJJSEVNSUhCZ1E5aWMyOTBiMEJuYldGcGJDNWpiMjJrZ1lVdw0KZ1lJeEN6QUpCZ05WQkFZVEFrVlRNU3N3S1FZRFZRUUtGQ0pCWjhPb2JtTnBZU0JEWVhSaGJHRnVZU0JrWlNCRFpYSjBhV1pwWTJGag0KYWNPek1RNHdEQVlEVlFRTEV3VkpSRU5CVkRFUE1BMEdBMVVFQlJNR01ERTNOVEUwTVNVd0l3WURWUVFERXh4TlFWSkpRU0JGVGtkUw0KUVVOSlFTQkNSVkpNUVU1SFFTQlRUMVJQb0JBR0Npc0dBUVFCOVhnQkFRR2dBZ3dBb0JRR0RsWUVBQUVEQmdFRUFmVjRBUUVDb0FJTQ0KQURBZkJnTlZIUklFR0RBV2dSUmxZMTlwWkdOaGRFQmpZWFJqWlhKMExtNWxkREFkQmdOVkhRNEVGZ1FVQUZYanVOc2tCMk1seXZVQg0KaDdwOFRKMHVKMHd3Z2dGSUJnTlZIU01FZ2dFL01JSUJPNEFVUkt2Y2tVaE4xNGg0Q24vZ2RPRG42NzIzS1Z5aGdnRVBwSUlCQ3pDQw0KQVFjeEN6QUpCZ05WQkFZVEFrVlRNVHN3T1FZRFZRUUtFekpCWjJWdVkybGhJRU5oZEdGc1lXNWhJR1JsSUVObGNuUnBabWxqWVdOcA0KYnlBb1RrbEdJRkV0TURnd01URTNOaTFKS1RFb01DWUdBMVVFQ3hNZlUyVnlkbVZwY3lCUWRXSnNhV056SUdSbElFTmxjblJwWm1sag0KWVdOcGJ6RThNRG9HQTFVRUN4TXpWbVZuWlhVZ2FIUjBjSE02THk5M2QzY3VZMkYwWTJWeWRDNXVaWFF2ZG1WeWNISmxjSEp2WkhWag0KWTJsdklDaGpLVEF6TVRVd013WURWUVFMRXl4S1pYSmhjbkYxYVdFZ1JXNTBhWFJoZEhNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVOaA0KZEdGc1lXNWxjekVjTUJvR0ExVUVBeE1UVUZKRlVGSlBSRlZEUTBsUElFVkRMVUZEUTRJUWR3S1R0TTFFRVU5RkVQWFVZSGdnaERBZA0KQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdRd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdXZ01EUUdDQ3NHQVFVRg0KQndFQkJDZ3dKakFrQmdnckJnRUZCUWN3QVlZWWFIUjBjSE02THk5dlkzTndMbU5oZEdObGNuUXVibVYwTUJnR0NDc0dBUVVGQndFRA0KQkF3d0NqQUlCZ1lFQUk1R0FRRXdnWVlHQTFVZEh3Ui9NSDB3UEtBNm9EaUdObWgwZEhBNkx5OWxjSE5qWkM1allYUmpaWEowTG01bA0KZEM5amNtd3ZjSEpsY0hKdlpIVmpZMmx2WDJWakxXbGtZMkYwTG1OeWJEQTlvRHVnT1lZM2FIUjBjRG92TDJWd2MyTmtNaTVqWVhSag0KWlhKMExtNWxkQzlqY213dmNISmxjSEp2WkhWalkybHZYMlZqTFdsa1kyRjBMbU55YkRDQjlnWURWUjBnQklIdU1JSHJNSUhvQmd3cg0KQmdFRUFmVjRBUU1CVmdFd2dkY3dMQVlJS3dZQkJRVUhBZ0VXSUdoMGRIQnpPaTh2ZDNkM0xtTmhkR05sY25RdWJtVjBMM1psY2tsRQ0KUTJGME1JR21CZ2dyQmdFRkJRY0NBakNCbVJxQmxrRnhkV1Z6ZENEdnY3MXpJSFZ1SUdObGNuUnBabWxqWVhRZ2NHVnljMjl1WVd3Zw0KU1VSRFFWUXNJSEpsWTI5dVpXZDFkQ0JrSjJsa1pXNTBhV1pwWTJGajc3KzlMQ0J6YVdkdVlYUjFjbUVnYVNCNGFXWnlZWFFnWkdVZw0KWTJ4aGMzTmxJRElnYVc1a2FYWnBaSFZoYkM0Z1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5UkVOaA0KZERBdEJnTlZIUWtFSmpBa01CQUdDQ3NHQVFVRkJ3a0VNUVFUQWtWVE1CQUdDQ3NHQVFVRkJ3a0ZNUVFUQWtWVE1BMEdDU3FHU0liMw0KRFFFQkJRVUFBNElCQVFDcTc3ODBSR1FNTEIxZ2tkTk1mTFhuZ3FNb1JIR0taYnZ6a3JxSUFtVDhXQWQxRThyQXBoUjkveExKVXRwNQ0KbGJnMmZScjVibDJqOE9WREJLMlltRzQxaDhBRG40U1RJL0FwZU5JTlNmalpzNk5Sc25XekZ5ZlhYbVBDSFlGQi9YV3p5aW1DRXhndg0KdnR1SCszUUF3Y3dobjUwUExFdWh3NUM1dmxYN0x5NUs2ckxMTUZOVVVNYldWeTFoWmVsSy9DQlRjQWpJTzM4TlkrdllSQU1LU2Y0TQ0KL2daUXo0cUJlRlZKYTUyUjdOY0FxQ2ZyZkxmYVhwYkRTZzk4eG9CZU5zMmluR3p4OFVTZ0VyTFpqS0pzZG4vS2pURDlnUy9zVGRRNg0KUTdpZHFsZDJMRlZsTzIvYjk0Wk5aQmNTLzc4RU9EWGdkV2ZreVBDN1J3OHJlOW5JMy9qVDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjxkczpPYmplY3QgRW5jb2Rpbmc9ImJhc2U2NCIgSWQ9Ik9iamVjdC05ODczM2NkZS04YmNjLTQ4YTAtOWI3Ny0wZTk5OTdiZGQwNTgiIE1pbWVUeXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iPlNHVnNiRzhnVjI5eWJHUT08L2RzOk9iamVjdD48ZHM6T2JqZWN0Pjx4YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcyB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1RdWFsaWZ5aW5nUHJvcGVydGllcyIgVGFyZ2V0PSIjU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjx4YWRlczpTaWduZWRQcm9wZXJ0aWVzIElkPSJTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjx4YWRlczpTaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzPjx4YWRlczpTaWduaW5nVGltZT4yMDExLTAzLTIxVDExOjQ0OjQyKzAxOjAwPC94YWRlczpTaWduaW5nVGltZT48eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjx4YWRlczpDZXJ0Pjx4YWRlczpDZXJ0RGlnZXN0PjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT4zbTZ3OTlUb3lTZDlKcEJsMWdCazhEei9iYlU9PC9kczpEaWdlc3RWYWx1ZT48L3hhZGVzOkNlcnREaWdlc3Q+PHhhZGVzOklzc3VlclNlcmlhbD48ZHM6WDUwOUlzc3Vlck5hbWU+Q049UFJFUFJPRFVDQ0lPIElEQ2F0LCBPVT1FbnRpdGF0IHB1YmxpY2EgZGUgY2VydGlmaWNhY2lvIGRlIGNpdXRhZGFucywgT1U9VmVnZXUgaHR0cHM6Ly93d3cuY2F0Y2VydC5uZXQvdmVyQ0lDLTIgKGMpMDMsIE9VPVNlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8gRUNWLTIsIEw9UGFzc2F0Z2UgZGUgbGEgQ29uY2VwY2lvIDExIDA4MDA4IEJhcmNlbG9uYSwgTz1BZ2VuY2lhIENhdGFsYW5hIGRlIENlcnRpZmljYWNpbyAoTklGIFEtMDgwMTE3Ni1JKSwgQz1FUzwvZHM6WDUwOUlzc3Vlck5hbWU+PGRzOlg1MDlTZXJpYWxOdW1iZXI+OTU1MDg8L2RzOlg1MDlTZXJpYWxOdW1iZXI+PC94YWRlczpJc3N1ZXJTZXJpYWw+PC94YWRlczpDZXJ0PjwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjwveGFkZXM6U2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcz48eGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PHhhZGVzOkRhdGFPYmplY3RGb3JtYXQgT2JqZWN0UmVmZXJlbmNlPSIjUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyI+PHhhZGVzOk1pbWVUeXBlPmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTwveGFkZXM6TWltZVR5cGU+PHhhZGVzOkVuY29kaW5nPmJhc2U2NDwveGFkZXM6RW5jb2Rpbmc+PC94YWRlczpEYXRhT2JqZWN0Rm9ybWF0PjwveGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPjwveGFkZXM6UXVhbGlmeWluZ1Byb3BlcnRpZXM+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+ "; - - IPersonalAttributeList palist = new PersonalAttributeList(); - - PersonalAttribute signedDoc = new PersonalAttribute(); - signedDoc.setName("signedDoc"); - signedDoc.setIsRequired(false); - ArrayList signed = new ArrayList(); - signed.add(signedDocResponse); - signedDoc.setValue(signed); - palist.add(signedDoc); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(false); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - palist.add(isAgeOver); - - attrQueryenRequest.setPersonalAttributeList(palist); - - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - - response.setPersonalAttributeList(palist); - - final STORKAttrQueryResponse storkResponse = getEngine() - .generateSTORKAttrQueryResponse(attrQueryenRequest, response, ipAddress, - destinationUrl, isNotHashing); - - attrQueryResponse = storkResponse.getTokenSaml(); - attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, - ipAddress); - - assertTrue("SignedDoc response should be the same: ", attrQeuryenResponse - .getPersonalAttributeList().get("signedDoc").getValue().get(0) - .equals(signedDocResponse)); - - } - - @Test - public final void testEncodeDecode() { - STORKAttrQueryRequest attrRequest = new STORKAttrQueryRequest(); - STORKAttrQueryRequest request; - IPersonalAttributeList list = null; - boolean outcome = false; - - try { - //STEP 1: Create the STORKAttrQueryRequest and get the SAML bytes - attrRequest.setSpSector("NOT AVAILABLE"); - attrRequest.setSpInstitution("NOT AVAILABLE"); - attrRequest.setSpApplication("NOT AVAILABLE"); - attrRequest.setSpCountry("NOT AVAILABLE"); - - attrRequest.setIssuer("123"); - attrRequest.setDestination("456"); - attrRequest.setAssertionConsumerServiceURL("789"); - attrRequest.setQaa(2); - attrRequest.setPersonalAttributeList(pal); - - System.out.println("Original PAL:"); - System.out.println(pal.toString()); - - attrRequest = engine.generateSTORKAttrQueryRequest(attrRequest); - - byte[] saml = attrRequest.getTokenSaml(); - - //STEP 2: RE-Create the STORKAttrQueryRequest from the SAML bytes - request = engine.validateSTORKAttrQueryRequest(saml); - - System.out.println("STORKAttrQueryRequest Issuer: " + request.getIssuer()); - System.out.println("STORKAttrQueryRequest Destination: " + request.getDestination()); - System.out.println("STORKAttrQueryRequest ServiceURL: " + request.getAssertionConsumerServiceURL()); - System.out.println("STORKAttrQueryRequest Attributes: " + request.getPersonalAttributeList().toString()); - System.out.println("STORKAttrQueryRequest QAA: " + request.getQaa()); - //------------------------------ - list = request.getPersonalAttributeList(); - - List values = new ArrayList(); - values.add("test1"); - values.add("test2"); - values.add("test3"); - list.get("newAttribute2").setValue(values); - - System.out.println("Values added in newAttribute2 PAL:"); - System.out.println(list.toString()); - - ////////////////////////////////////////////////////////////////////////// - final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); - response.setPersonalAttributeList(list); - - final STORKAttrQueryResponse storkResponse = - engine.generateSTORKAttrQueryResponse(request, response, "127.0.0.1", - request.getAssertionConsumerServiceURL(), false); - - byte[] samlBytes = storkResponse.getTokenSaml(); - - //STEP 3: RE-Create the STORKAttrQueryResponse from the SAML bytes - STORKAttrQueryResponse attrResponse = null; - attrResponse = - engine.validateSTORKAttrQueryResponse(samlBytes, "127.0.0.1"); - - System.out.println("Response decoded PAL:"); - System.out.println(attrResponse.getPersonalAttributeList().toString()); - - values = attrResponse.getPersonalAttributeList().get("newAttribute2").getValue(); - if ( values.contains("test1") && values.contains("test2") && values.contains("test3") ) - outcome = true; - } catch (final STORKSAMLEngineException e) { - LOG.error("Errror genereating SAML Token for Authentication Request", e); - } - - assertTrue(outcome); - } - - @Test - public final void testGenerateAttrRequestWithMultipleAssertions() - throws STORKSAMLEngineException { - STORKAttrQueryRequest req = null; - STORKAttrQueryResponse res0 = null; - STORKAttrQueryResponse res1 = null; - STORKAttrQueryResponse res2 = null; - STORKAttrQueryResponse res = null; - STORKAttrQueryResponse restotal = null; - - try { - req = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); - - attrQueryenRequest = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); - - } catch (STORKSAMLEngineException e) { - fail("Error validating STORKAuthnRequest"); - } - - IPersonalAttributeList pList = req.getPersonalAttributeList(); - for (int i =0; i < pList.size(); i++) - { - PersonalAttribute attr = pList.get("dateOfBirth"); - attr.setValue(Arrays.asList("19820919")); - pList.remove("dateOfBirth"); - pList.add(attr); - PersonalAttribute attr1 = pList.get("givenName"); - attr1.setValue(Arrays.asList("Sveinborn Oskarsson")); - pList.remove("givenName"); - pList.add(attr1); - PersonalAttribute attr2 = pList.get("isAgeOver"); - attr2.setValue(Arrays.asList("true")); - pList.remove("isAgeOver"); - pList.add(attr2); - } - - res = new STORKAttrQueryResponse(); - res.setPersonalAttributeList(pList); - - STORKAttrQueryResponse storkResponse = getEngine() - .generateSTORKAttrQueryResponse(req, res, ipAddress, - destinationUrl, isNotHashing); - - res0 = getEngine().validateSTORKAttrQueryResponse(storkResponse.getTokenSaml(), ipAddress); - - storkResponse = getEngine() - .generateSTORKAttrQueryResponse(req, res, ipAddress, - destinationUrl, isNotHashing); - res1 = getEngine().validateSTORKAttrQueryResponse(storkResponse.getTokenSaml(), ipAddress); - - storkResponse = getEngine() - .generateSTORKAttrQueryResponse(req, res, ipAddress, - destinationUrl, isNotHashing); - res2 = getEngine().validateSTORKAttrQueryResponse(storkResponse.getTokenSaml(), ipAddress); - - List responses = new ArrayList(); - responses.add(res0); - responses.add(res1); - responses.add(res2); - - STORKAttrQueryResponse resfinal = new STORKAttrQueryResponse(); - storkResponse = getEngine().generateSTORKAttrQueryResponseWithAssertions(req, resfinal, responses, - ipAddress, destinationUrl, isNotHashing); - - attrQueryResponse = storkResponse.getTokenSaml(); - FileOutputStream output = null; - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryMultiAssertResponse.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(attrQueryResponse); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - res = null; - res = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress); - System.out.println(res.getTotalPersonalAttributeList().toString()); - assertNotNull(res); - } -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java deleted file mode 100644 index 02a8a6fab..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java +++ /dev/null @@ -1,968 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.test.simple; - -import static org.junit.Assert.*; - -import java.util.ArrayList; - -import org.junit.Ignore; -import org.junit.Test; - -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - -/** - * The Class StorkAuthRequestTest defines a class to . - */ -public class StorkAuthRequestTest { - - /** The engines. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); - private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); - - - /** - * Instantiates a new stork authentication request test. - */ - public StorkAuthRequestTest() { - pal = new PersonalAttributeList(); - - final PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - final ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - pal.add(isAgeOver); - - final PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - pal.add(dateOfBirth); - - final PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - pal.add(eIDNumber); - - destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; - - spName = "University of Oxford"; - spSector = "EDU001"; - spInstitution = "OXF001"; - spApplication = "APP001"; - spCountry = "EN"; - - spId = "EDU001-OXF001-APP001"; - - } - - /** The destination. */ - private String destination; - - /** The service provider name. */ - private String spName; - - /** The service provider sector. */ - private String spSector; - - /** The service provider institution. */ - private String spInstitution; - - /** The service provider application. */ - private String spApplication; - - /** The service provider country. */ - private String spCountry; - - /** The service provider id. */ - private String spId; - - /** The quality authentication assurance level. */ - private static final int QAAL = 3; - - /** The List of Personal Attributes. */ - private IPersonalAttributeList pal; - - /** The assertion consumer URL. */ - private String assertConsumerUrl; - - /** The authentication request. */ - private static byte[] authRequest; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkAuthRequestTest.class.getName()); - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - } - - /** - * Test generate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnRequest() throws STORKSAMLEngineException { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - //engine.generateSTORKAuthnRequest(request); - - LOG.info("STORKAuthnRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAuthnRequest(request).getTokenSaml())); - request.setCitizenCountryCode("ES"); - LOG.info("STORKAuthnRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAuthnRequest(request).getTokenSaml())); - } - - - /** - * Test generate authentication request error personal attribute name error. - */ - @Test - public final void testGenerateAuthnRequestPALsErr1() { - - final IPersonalAttributeList palWrong = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("attrNotValid"); - worngAttr.setIsRequired(true); - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(palWrong); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - - /** - * Test generate authentication request error personal attribute value error. - */ - @Test - public final void testGenerateAuthnRequestPALsErr2() { - - final IPersonalAttributeList palWrong = new PersonalAttributeList(); - - final PersonalAttribute attrNotValid = new PersonalAttribute(); - attrNotValid.setName("attrNotValid"); - attrNotValid.setIsRequired(true); - palWrong.add(attrNotValid); - - - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(palWrong); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request error provider name null. - */ - @Test - public final void testGenerateAuthnRequestSPNAmeErr1() { - - - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(null); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try - { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } - catch (STORKSAMLEngineException e) - { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request authentication assurance level - * negative value. - */ - @Test - public final void testGenerateAuthnRequestQaalErr1() { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(-1); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - - try { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request service provider sector null. - */ - @Test - public final void testGenerateAuthnRequestSectorErr() { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(null); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - - } - } - - /** - * Test generate authentication request service provider institution null. - */ - @Test - public final void testGenerateAuthnRequestInstitutionrErr() { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(null); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } - } - - /** - * Test generate authentication request service provider application null. - */ - @Test - public final void testGenerateAuthnRequestApplicationErr() { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(null); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } - } - - /** - * Test generate authentication request service provider country null. - */ - @Test - public final void testGenerateAuthnRequestCountryErr() { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(null); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request error with quality authentication - * assurance level wrong. - */ - @Test - public final void testGenerateAuthnRequestQaalErr2() { - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(0); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request personal attribute list null value. - */ - @Test - public final void testGenerateAuthnRequestPALErr1() { - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(null); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication request error with assertion consumer URL - * null. - */ - @Test - public final void testGenerateAuthnRequestAssertionConsumerErr1() { - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(null); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - engine.generateSTORKAuthnRequest(request); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request null parameter. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequestNullParam() - throws STORKSAMLEngineException { - try { - engine.validateSTORKAuthnRequest(null); - fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request error bytes encode. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequestErrorEncode() - throws STORKSAMLEngineException { - try { - engine.validateSTORKAuthnRequest("messageError".getBytes()); - fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequest() throws STORKSAMLEngineException { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - authRequest = engine.generateSTORKAuthnRequest(request).getTokenSaml(); - - final STORKAuthnRequest validatedRequest = engine.validateSTORKAuthnRequest(authRequest); - - assertEquals("CrossBorderShare incorrect: ", validatedRequest.isEIDCrossBorderShare(), false); - assertEquals("CrossSectorShare incorrect: ", validatedRequest.isEIDCrossSectorShare(), false); - assertEquals("SectorShare incorrect: ", validatedRequest.isEIDSectorShare(), false); - - } - - /** - * Test validate data authenticate request. Verified parameters after - * validation. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateDataAuthnRequest() throws STORKSAMLEngineException { - - final STORKAuthnRequest request = engine.validateSTORKAuthnRequest(authRequest); - - assertEquals("Sestination incorrect: ", request.getDestination(), destination); - - assertEquals("CrossBorderShare incorrect: ", request.isEIDCrossBorderShare(), false); - assertEquals("CrossSectorShare incorrect: ", request.isEIDCrossSectorShare(), false); - assertEquals("SectorShare incorrect: ", request.isEIDSectorShare(), false); - - assertEquals("Service provider incorrect: ", request.getProviderName(), spName); - assertEquals("QAAL incorrect: ", request.getQaa(), QAAL); - assertEquals("SPSector incorrect: ", request.getSpSector(), spSector); - assertEquals("SPInstitution incorrect: ", request.getSpInstitution(), null); - assertEquals("SPApplication incorrect: ", request.getSpApplication(), spApplication); - assertEquals("Asserition consumer URL incorrect: ", request.getAssertionConsumerServiceURL(), assertConsumerUrl); - - assertEquals("SP Country incorrect: ", request.getSpCountry(), spCountry); - assertEquals("SP Id incorrect: ", request.getSPID(), spId); - assertEquals("CitizenCountryCode incorrect: ", request.getCitizenCountryCode(), "ES"); - - } - - /** - * Test validate file authentication request. Validate from XML file. - * - * @throws Exception the exception - */ - @Test - public final void testValidateFileAuthnRequest() throws Exception { - - final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml"); - - try { - engine.validateSTORKAuthnRequest(bytes); - fail("testValidateFileAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error(e.getMessage()); - } - } - - /** - * Test validate file authentication request tag delete. - * - * @throws Exception the exception - */ - @Test - public final void testValidateFileAuthnRequestTagDelete() throws Exception { - - final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml"); - - try { - engine.validateSTORKAuthnRequest(bytes); - fail("validateSTORKAuthnRequest(...) should have thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error(e.getMessage()); - - } - } - - /** - * Test validate authentication request not trusted token. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequestNotTrustedErr1() - throws STORKSAMLEngineException { - - try { - final STORKSAMLEngine engineNotTrusted = STORKSAMLEngine - .getInstance("CONF2"); - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - - final byte[] authReqNotTrust = engineNotTrusted - .generateSTORKAuthnRequest(request).getTokenSaml(); - - engine.validateSTORKAuthnRequest(authReqNotTrust); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("validateSTORKAuthnRequestNotTrusted(...) should not have thrown an STORKSAMLEngineException!"); - } - } - - /** - * Test validate authentication request trusted. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequestTrusted() - throws STORKSAMLEngineException { - - final STORKSAMLEngine engineTrusted = STORKSAMLEngine - .getInstance("CONF3"); - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - - final byte[] authReqNotTrust = engineTrusted.generateSTORKAuthnRequest( - request).getTokenSaml(); - - // engine ("CONF1") no have trust certificate from "CONF2" - engine.validateSTORKAuthnRequest(authReqNotTrust); - - } - - - - - /** - * Test generate authentication request service provider application null. - */ - @Test - public final void testGenerateAuthnRequestNADA() { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(null); - request.setSpInstitution(null); - request.setSpApplication(null); - request.setSpCountry(null); - - try { - - engine.validateSTORKAuthnRequest(authRequest); - - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); - } - } - - /** - * Test validate authentication request with unknown elements. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequestWithUnknownElements() throws STORKSAMLEngineException { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - IPersonalAttributeList pAttList = new PersonalAttributeList(); - - final PersonalAttribute unknown = new PersonalAttribute(); - unknown.setName("unknown"); - unknown.setIsRequired(true); - pAttList.add(unknown); - - final PersonalAttribute eIdentifier = new PersonalAttribute(); - eIdentifier.setName("eIdentifier"); - eIdentifier.setIsRequired(true); - pAttList.add(eIdentifier); - - request.setPersonalAttributeList(pAttList); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - STORKAuthnRequest req = new STORKAuthnRequest(); - - req = engine3.generateSTORKAuthnRequest(request); - - req = engine.validateSTORKAuthnRequest(req.getTokenSaml()); - - assertNull("The value shouldn't exist", req.getPersonalAttributeList().get("unknown")); - assertNotNull("The value should exist", req.getPersonalAttributeList().get("eIdentifier")); - - } - - /** - * Test generate Request with required elements by default - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnRequestWithIsRequiredElementsByDefault() throws STORKSAMLEngineException { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - IPersonalAttributeList pAttList = new PersonalAttributeList(); - - final PersonalAttribute eIdentifier = new PersonalAttribute(); - eIdentifier.setName("eIdentifier"); - eIdentifier.setIsRequired(true); - pAttList.add(eIdentifier); - - request.setPersonalAttributeList(pAttList); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - STORKAuthnRequest req = new STORKAuthnRequest(); - STORKAuthnRequest reqTrue = new STORKAuthnRequest(); - STORKAuthnRequest reqFalse = new STORKAuthnRequest(); - - reqTrue = engine.generateSTORKAuthnRequest(request); - reqFalse = engine2.generateSTORKAuthnRequest(request); - req = engine3.generateSTORKAuthnRequest(request); - - - String token = new String(req.getTokenSaml()); - String reqTrueToken = new String(reqTrue.getTokenSaml()); - String reqFalseToken = new String(reqFalse.getTokenSaml()); - - assertTrue("The token must contain the chain 'isRequired'", token.contains("isRequired")); - assertTrue("The token must contain the chain 'isRequired'", reqTrueToken.contains("isRequired")); - assertFalse("The token must contain the chain 'isRequired'", reqFalseToken.contains("isRequired")); - - } - - /** - * Test validating request and getting alias used to save - * the saml trusted certificate into trustore - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnRequestGettingItsAlias() throws STORKSAMLEngineException { - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - IPersonalAttributeList pAttList = new PersonalAttributeList(); - - final PersonalAttribute eIdentifier = new PersonalAttribute(); - eIdentifier.setName("eIdentifier"); - eIdentifier.setIsRequired(true); - pAttList.add(eIdentifier); - - request.setPersonalAttributeList(pAttList); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - STORKAuthnRequest req = new STORKAuthnRequest(); - - req = engine3.generateSTORKAuthnRequest(request); - req = engine.validateSTORKAuthnRequest(req.getTokenSaml()); - assertTrue("The alias should match this value", req.getAlias().equals("local-demo-cert")); - - req = engine2.generateSTORKAuthnRequest(request); - req = engine2.validateSTORKAuthnRequest(req.getTokenSaml()); - assertTrue("The alias should match this value", req.getAlias().equals("local-demo-cert")); - - - - } - - /** - * Test generating/validating request with signedDoc - * - * @throws STORKSAMLEngineException - * the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnRequestWithSignedDoc() - throws STORKSAMLEngineException { - - String signedDocRequest = "VGVzdCB0ZXh0"; - - final STORKAuthnRequest request = new STORKAuthnRequest(); - - PersonalAttributeList paler = new PersonalAttributeList(); - - final PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - paler.add(eIDNumber); - - final PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - final ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - paler.add(isAgeOver); - - final PersonalAttribute signedDoc = new PersonalAttribute(); - signedDoc.setName("signedDoc"); - final ArrayList signedDocs = new ArrayList(); - signedDocs.add(signedDocRequest); - signedDoc.setValue(signedDocs); - signedDoc.setIsRequired(false); - paler.add(signedDoc); - - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(paler); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // new parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - STORKAuthnRequest req = new STORKAuthnRequest(); - - req = engine.generateSTORKAuthnRequest(request); - req = engine.validateSTORKAuthnRequest(req.getTokenSaml()); - - assertTrue("SignedDoc request should be the same: ", req - .getPersonalAttributeList().get("signedDoc").getValue().get(0) - .equals(signedDocRequest)); - - - } - -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java deleted file mode 100644 index 46904788f..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package eu.stork.peps.test.simple; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -import org.junit.Test; -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.STORKLogoutRequest; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - - -public class StorkLogoutRequestTest { - - /** The engines. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); - private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); - private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); - - public StorkLogoutRequestTest() { - destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - spUserId = "IS/IS/1234567890"; - } - - /** The destination. */ - private String destination; - - /** The user id. */ - private String spUserId; - - /** The logout request. */ - private static byte[] logoutRequest; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkLogoutRequestTest.class.getName()); - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - } - - /** - * Test generate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateLogoutRequest() throws STORKSAMLEngineException { - - final STORKLogoutRequest request = new STORKLogoutRequest(); - - request.setDestination(destination); - - request.setSpProvidedId(spUserId); - - STORKLogoutRequest req1 = engine0.generateSTORKLogoutRequest(request); - byte[] reqByte = req1.getTokenSaml(); - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/LogoutRequest.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(reqByte); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - LOG.info("STORKAttrQueryRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKLogoutRequest(request).getTokenSaml())); - - LOG.info("STORKAttrQueryRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKLogoutRequest(request).getTokenSaml())); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java deleted file mode 100644 index 2d05e04aa..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java +++ /dev/null @@ -1,142 +0,0 @@ -package eu.stork.peps.test.simple; - -import static org.junit.Assert.*; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; - -import junit.framework.Assert; - -import org.junit.Test; -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.STORKLogoutRequest; -import eu.stork.peps.auth.commons.STORKLogoutResponse; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - - -public class StorkLogoutResponseTest { - - /** The engines. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); - private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); - private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); - - public StorkLogoutResponseTest() { - destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - spUserId = "IS/IS/1234567890"; - } - - /** The destination. */ - private String destination; - - /** The user id. */ - private String spUserId; - - /** The logout request. */ - private static byte[] logoutRequest; - - /** The logout response. */ - private static byte[] logoutResponse; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkLogoutResponseTest.class.getName()); - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - } - - /** - * Test generate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateLogoutRequest() throws STORKSAMLEngineException { - - final STORKLogoutRequest request = new STORKLogoutRequest(); - - final STORKLogoutResponse response = new STORKLogoutResponse(); - - request.setDestination(destination); - response.setDestination(destination); - - request.setSpProvidedId(spUserId); - - STORKLogoutRequest req1 = engine0.generateSTORKLogoutRequest(request); - - STORKLogoutResponse res = engine0.generateSTORKLogoutResponse(req1, response); - - byte[] reqByte = res.getTokenSaml(); - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/LogoutResponse.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(reqByte); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - - assertNotNull(reqByte); - } - - /** - * Test generate authentication request. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateLogoutRequestFail() throws STORKSAMLEngineException { - - final STORKLogoutRequest request = new STORKLogoutRequest(); - - final STORKLogoutResponse response = new STORKLogoutResponse(); - - request.setDestination(destination); - response.setDestination(destination); - response.setStatusMessage("User not found."); - response.setStatusCode("1234"); - request.setSpProvidedId(spUserId); - - STORKLogoutRequest req1 = engine0.generateSTORKLogoutRequest(request); - - STORKLogoutResponse res = engine0.generateSTORKLogoutResponseFail(req1, response); - - byte[] reqByte = res.getTokenSaml(); - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/LogoutResponseFail.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(reqByte); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - assertNotNull(reqByte); - } - -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java deleted file mode 100644 index 62e9cfb18..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java +++ /dev/null @@ -1,533 +0,0 @@ -package eu.stork.peps.test.simple; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.fail; - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import org.junit.Test; -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -import eu.stork.peps.auth.commons.STORKAttrQueryRequest; -import eu.stork.peps.auth.commons.STORKAttrQueryResponse; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import eu.stork.peps.auth.commons.STORKAuthnResponse; -import eu.stork.peps.auth.commons.STORKStatusCode; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - - -public class StorkNewResponseTest { - /** The engine. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); - - /** - * Gets the engine. - * - * @return the engine - */ - public static STORKSAMLEngine getEngine() { - return engine; - } - - public static STORKSAMLEngine getEngine2() { - return engine0; - } - - /** - * Sets the engine. - * - * @param newEngine the new engine - */ - public static void setEngine(final STORKSAMLEngine newEngine) { - StorkNewResponseTest.engine = newEngine; - } - - /** The destination. */ - private static String destination; - - /** The service provider name. */ - private static String spName; - - /** The service provider sector. */ - private static String spSector; - - /** The service provider institution. */ - private static String spInstitution; - - /** The service provider application. */ - private static String spApplication; - - /** The service provider country. */ - private static String spCountry; - - /** The service provider id. */ - private static String spId; - - /** The quality authentication assurance level. */ - private static final int QAAL = 3; - - /** The state. */ - private static String state = "ES"; - - /** The town. */ - private static String town = "Madrid"; - - /** The municipality code. */ - private static String municipalityCode = "MA001"; - - /** The postal code. */ - private static String postalCode = "28038"; - - /** The street name. */ - private static String streetName = "Marchamalo"; - - /** The street number. */ - private static String streetNumber = "3"; - - /** The apartament number. */ - private static String apartamentNumber = "5º E"; - - /** The List of Personal Attributes. */ - private static IPersonalAttributeList pal; - - /** The List of Personal Attributes. */ - private static IPersonalAttributeList pal2; - - /** The assertion consumer URL. */ - private static String assertConsumerUrl; - - /** The authentication request. */ - private static byte[] authRequest; - - /** The authentication response. */ - private static byte[] authResponse; - - /** The authentication request. */ - private static STORKAuthnRequest authenRequest; - - /** The authentication response. */ - private static STORKAuthnResponse authnResponse; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkResponseTest.class.getName()); - - /** - * Instantiates a new stork response test. - */ - public StorkNewResponseTest() { - super(); - } - - /** The IP address. */ - private static String ipAddress; - - /** The is hashing. */ - private final boolean isHashing = Boolean.TRUE; - - /** The is not hashing. */ - private final boolean isNotHashing = Boolean.FALSE; - - /** The ERROR text. */ - private static final String ERROR_TXT = "generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"; - - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - /** The attribute query request. */ - private static STORKAttrQueryRequest attrQueryenRequest; - - /** The attribute query response. */ - private static STORKAttrQueryResponse attrQeuryenResponse; - - /** The attribute query request. */ - private static byte[] attrQueryRequest; - - /** The attribute query response. */ - private static byte[] attrQueryResponse; - - - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - - pal = new PersonalAttributeList(); - pal2 = new PersonalAttributeList(); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(false); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - pal.add(isAgeOver); - - PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - pal.add(dateOfBirth); - - PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - pal.add(eIDNumber); - - final PersonalAttribute givenName = new PersonalAttribute(); - givenName.setName("givenName"); - givenName.setIsRequired(true); - pal.add(givenName); - - PersonalAttribute canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - pal.add(canRessAddress); - - PersonalAttribute newAttribute = new PersonalAttribute(); - newAttribute.setName("newAttribute2"); - newAttribute.setIsRequired(true); - pal.add(newAttribute); - - PersonalAttribute hasDegree = new PersonalAttribute(); - hasDegree.setName("hasDegree"); - List vals = new ArrayList(); - vals.add("Engineering"); - vals.add("Computer Science"); - hasDegree.setValue(vals); - pal2.add(hasDegree); - - PersonalAttribute mandate = new PersonalAttribute(); - mandate.setName("mandateContent"); - List manvalues = new ArrayList(); - manvalues.add("Powers"); - mandate.setValue(manvalues); - pal2.add(mandate); - - destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; - spName = "University Oxford"; - - spName = "University of Oxford"; - spSector = "EDU001"; - spInstitution = "OXF001"; - spApplication = "APP001"; - spCountry = "EN"; - - spId = "EDU001-APP001-APP001"; - - final STORKAuthnRequest request = new STORKAuthnRequest(); - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - authRequest = getEngine().generateSTORKAuthnRequest(request) - .getTokenSaml(); - - authenRequest = getEngine().validateSTORKAuthnRequest(authRequest); - - } catch (STORKSAMLEngineException e) { - fail("Error create STORKAuthnRequest"); - } - - ipAddress = "111.222.333.444"; - - pal = new PersonalAttributeList(); - - isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - ages = new ArrayList(); - - ages.add("16"); - ages.add("18"); - - isAgeOver.setValue(ages); - isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(isAgeOver); - - dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - final ArrayList date = new ArrayList(); - date.add("16/12/2008"); - dateOfBirth.setValue(date); - dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(dateOfBirth); - - eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - final ArrayList idNumber = new ArrayList(); - idNumber.add("123456789PA"); - eIDNumber.setValue(idNumber); - eIDNumber.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(eIDNumber); - - canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap address = new HashMap(); - - address.put("state", state); - address.put("municipalityCode", municipalityCode); - address.put("town", town); - address.put("postalCode", postalCode); - address.put("streetName", streetName); - address.put("streetNumber", streetNumber); - address.put("apartamentNumber", apartamentNumber); - - canRessAddress.setComplexValue(address); - pal.add(canRessAddress); - - newAttribute = new PersonalAttribute(); - newAttribute.setName("newAttribute2"); - newAttribute.setIsRequired(true); - newAttribute.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap values = new HashMap(); - - values.put("value1", "value1"); - values.put("value2", "value2"); - values.put("value3", "value3"); - values.put("value4", "value4"); - - newAttribute.setComplexValue(values); - pal.add(newAttribute); - - final STORKAttrQueryRequest arequest = new STORKAttrQueryRequest(); - arequest.setDestination(destination); - //request.setProviderName(spName); - arequest.setQaa(QAAL); - arequest.setPersonalAttributeList(pal2); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - arequest.setSpSector(spSector); - arequest.setSpInstitution(spInstitution); - arequest.setSpApplication(spApplication); - arequest.setSpCountry(spCountry); - arequest.setSPID(spId); - arequest.setCitizenCountryCode("IS"); - arequest.setAssertionConsumerServiceURL(assertConsumerUrl); - - try { - attrQueryRequest = getEngine().generateSTORKAttrQueryRequest(arequest) - .getTokenSaml(); - - attrQueryenRequest = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); - - } catch (STORKSAMLEngineException e) { - fail("Error create STORKAuthnRequest"); - } - - } - - /** - * Test generate authentication request without errors. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnResponseWithSimpleRes() throws STORKSAMLEngineException { - - //Create the response holding pal - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - - //List of query responses - List resList = new ArrayList(); - - final STORKAttrQueryResponse aResponse1 = new STORKAttrQueryResponse(); - aResponse1.setPersonalAttributeList(pal2); - - final STORKAttrQueryResponse aStorkResponse1 = getEngine2() - .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse1, ipAddress, - destination, isNotHashing); - - attrQueryResponse = aStorkResponse1.getTokenSaml(); - - resList.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - final STORKAttrQueryResponse aResponse2 = new STORKAttrQueryResponse(); - aResponse2.setPersonalAttributeList(pal2); - - final STORKAttrQueryResponse aStorkResponse2 = getEngine() - .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse2, ipAddress, - destination, isNotHashing); - - attrQueryResponse = aStorkResponse2.getTokenSaml(); - - resList.add(getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - //Create the final response containing query responses - final STORKAuthnResponse storkResponse = getEngine() - .generateSTORKAuthnResponseAfterQuery(authenRequest, response, ipAddress, - isNotHashing, resList); - - authResponse = storkResponse.getTokenSaml(); - - //Validate, write out and print out the attribute lists a - STORKAuthnResponse finalResponse = getEngine().validateSTORKAuthnResponseWithQuery(authResponse, ipAddress); - System.out.println("The original pal: " + finalResponse.getPersonalAttributeList().toString()); - for (int i = 0; i < finalResponse.getPersonalAttributeLists().size(); i++) - { - System.out.println("Pal "+ Integer.toString(i) + ": " + finalResponse.getPersonalAttributeLists().get(i).toString()); - } - System.out.println("The total pal: " + finalResponse.getTotalPersonalAttributeList().toString()); - - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthAttrQResponse.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(authResponse); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Test generate authentication request without errors. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnResponseWithComplexRes() throws STORKSAMLEngineException { - - //Create the response holding pal - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - - //Create a list for the attribute query responses we have - List resList = new ArrayList(); - - //Create the first attribute query response - final STORKAttrQueryResponse aResponse1 = new STORKAttrQueryResponse(); - aResponse1.setPersonalAttributeList(pal2); - - //Generate the first response - final STORKAttrQueryResponse aStorkResponse1 = getEngine2() - .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse1, ipAddress, - destination, isNotHashing); - - attrQueryResponse = aStorkResponse1.getTokenSaml(); - - //Validate it and add to the response list - resList.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - //Create a second response like the first - final STORKAttrQueryResponse aResponse2 = new STORKAttrQueryResponse(); - aResponse2.setPersonalAttributeList(pal2); - - final STORKAttrQueryResponse aStorkResponse2 = getEngine() - .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse2, ipAddress, - destination, isNotHashing); - - attrQueryResponse = aStorkResponse2.getTokenSaml(); - - resList.add(getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - //Create a attribute query response which contains multiple assertions from an AP - final STORKAttrQueryResponse aResponseMulti = new STORKAttrQueryResponse(); - aResponseMulti.setPersonalAttributeList(pal2); - - //Create a list for the responses which the multiple assertion response will hold - List multiResponses = new ArrayList(); - - //Create two more simple responses which the multi assertion response will hold - final STORKAttrQueryResponse aResponse3 = new STORKAttrQueryResponse(); - aResponse3.setPersonalAttributeList(pal2); - - final STORKAttrQueryResponse aStorkResponse3 = getEngine2() - .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse3, ipAddress, - destination, isNotHashing); - - attrQueryResponse = aStorkResponse3.getTokenSaml(); - //Validate and add to the multi response - multiResponses.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - final STORKAttrQueryResponse aResponse4 = new STORKAttrQueryResponse(); - aResponse4.setPersonalAttributeList(pal2); - - final STORKAttrQueryResponse aStorkResponse4 = getEngine() - .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse4, ipAddress, - destination, isNotHashing); - - attrQueryResponse = aStorkResponse4.getTokenSaml(); - - multiResponses.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - //Generate the multi assertion query response - final STORKAttrQueryResponse aStorkResponseMulti = getEngine() - .generateSTORKAttrQueryResponseWithAssertions(attrQueryenRequest, aResponseMulti, multiResponses, - ipAddress, destination, isNotHashing); - - attrQueryResponse = aStorkResponseMulti.getTokenSaml(); - - //Add to the list of query responses - resList.add(getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); - - //Generate the stork response with all the query responses - final STORKAuthnResponse storkResponse = getEngine() - .generateSTORKAuthnResponseAfterQuery(authenRequest, response, ipAddress, - isNotHashing, resList); - - authResponse = storkResponse.getTokenSaml(); - - //Validate it, write out and print out the personal attribute lists - STORKAuthnResponse finalResponse = getEngine().validateSTORKAuthnResponseWithQuery(authResponse, ipAddress); - System.out.println("The original pal: " + finalResponse.getPersonalAttributeList().toString()); - for (int i = 0; i < finalResponse.getPersonalAttributeLists().size(); i++) - { - System.out.println("Pal "+ Integer.toString(i) + ": " + finalResponse.getPersonalAttributeLists().get(i).toString()); - } - System.out.println("The total pal: " + finalResponse.getTotalPersonalAttributeList().toString()); - - FileOutputStream output = null; - - try { - output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthAttrQMultiAssertResponse.xml")); - } catch (FileNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - try { - output.write(authResponse); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - assertNotNull(finalResponse); - } -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java deleted file mode 100644 index fe6fcd4f6..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java +++ /dev/null @@ -1,935 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -package eu.stork.peps.test.simple; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; - -import org.junit.Ignore; -import org.junit.Test; -import org.opensaml.xml.parse.BasicParserPool; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import eu.stork.peps.auth.commons.IPersonalAttributeList; -import eu.stork.peps.auth.commons.PEPSUtil; -import eu.stork.peps.auth.commons.PersonalAttribute; -import eu.stork.peps.auth.commons.PersonalAttributeList; -import eu.stork.peps.auth.commons.STORKAttrQueryRequest; -import eu.stork.peps.auth.commons.STORKAttrQueryResponse; -import eu.stork.peps.auth.commons.STORKAuthnRequest; -import eu.stork.peps.auth.commons.STORKAuthnResponse; -import eu.stork.peps.auth.commons.STORKStatusCode; -import eu.stork.peps.auth.commons.STORKSubStatusCode; -import eu.stork.peps.auth.engine.STORKSAMLEngine; -import eu.stork.peps.exceptions.STORKSAMLEngineException; - -/** - * The Class AuthRequestTest. - */ -public class StorkResponseTest { - - /** The engine. */ - private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); - - /** - * Gets the engine. - * - * @return the engine - */ - public static STORKSAMLEngine getEngine() { - return engine; - } - - /** - * Sets the engine. - * - * @param newEngine the new engine - */ - public static void setEngine(final STORKSAMLEngine newEngine) { - StorkResponseTest.engine = newEngine; - } - - /** The destination. */ - private static String destination; - - /** The service provider name. */ - private static String spName; - - /** The service provider sector. */ - private static String spSector; - - /** The service provider institution. */ - private static String spInstitution; - - /** The service provider application. */ - private static String spApplication; - - /** The service provider country. */ - private static String spCountry; - - /** The service provider id. */ - private static String spId; - - /** The quality authentication assurance level. */ - private static final int QAAL = 3; - - /** The state. */ - private static String state = "ES"; - - /** The town. */ - private static String town = "Madrid"; - - /** The municipality code. */ - private static String municipalityCode = "MA001"; - - /** The postal code. */ - private static String postalCode = "28038"; - - /** The street name. */ - private static String streetName = "Marchamalo"; - - /** The street number. */ - private static String streetNumber = "3"; - - /** The apartament number. */ - private static String apartamentNumber = "5º E"; - - /** The List of Personal Attributes. */ - private static IPersonalAttributeList pal; - - /** The assertion consumer URL. */ - private static String assertConsumerUrl; - - /** The authentication request. */ - private static byte[] authRequest; - - /** The authentication response. */ - private static byte[] authResponse; - - /** The authentication request. */ - private static STORKAuthnRequest authenRequest; - - /** The authentication response. */ - private static STORKAuthnResponse authnResponse; - - /** The Constant LOG. */ - private static final Logger LOG = LoggerFactory - .getLogger(StorkResponseTest.class.getName()); - - /** - * Instantiates a new stork response test. - */ - public StorkResponseTest() { - super(); - } - - /** The IP address. */ - private static String ipAddress; - - /** The is hashing. */ - private final boolean isHashing = Boolean.TRUE; - - /** The is not hashing. */ - private final boolean isNotHashing = Boolean.FALSE; - - /** The ERROR text. */ - private static final String ERROR_TXT = "generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"; - - - /** Parser manager used to parse XML. */ - private static BasicParserPool parser; - - static { - parser = new BasicParserPool(); - parser.setNamespaceAware(true); - - pal = new PersonalAttributeList(); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(false); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - pal.add(isAgeOver); - - PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - pal.add(dateOfBirth); - - PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - pal.add(eIDNumber); - - final PersonalAttribute givenName = new PersonalAttribute(); - givenName.setName("givenName"); - givenName.setIsRequired(true); - pal.add(givenName); - - PersonalAttribute canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - pal.add(canRessAddress); - - PersonalAttribute newAttribute = new PersonalAttribute(); - newAttribute.setName("newAttribute2"); - newAttribute.setIsRequired(true); - pal.add(newAttribute); - - destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; - assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; - spName = "University Oxford"; - - spName = "University of Oxford"; - spSector = "EDU001"; - spInstitution = "OXF001"; - spApplication = "APP001"; - spCountry = "EN"; - - spId = "EDU001-APP001-APP001"; - - final STORKAuthnRequest request = new STORKAuthnRequest(); - request.setDestination(destination); - request.setProviderName(spName); - request.setQaa(QAAL); - request.setPersonalAttributeList(pal); - request.setAssertionConsumerServiceURL(assertConsumerUrl); - - // news parameters - request.setSpSector(spSector); - request.setSpInstitution(spInstitution); - request.setSpApplication(spApplication); - request.setSpCountry(spCountry); - request.setSPID(spId); - request.setCitizenCountryCode("ES"); - - try { - authRequest = getEngine().generateSTORKAuthnRequest(request) - .getTokenSaml(); - - authenRequest = getEngine().validateSTORKAuthnRequest(authRequest); - - } catch (STORKSAMLEngineException e) { - fail("Error create STORKAuthnRequest"); - } - - ipAddress = "111.222.333.444"; - - pal = new PersonalAttributeList(); - - isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - ages = new ArrayList(); - - ages.add("16"); - ages.add("18"); - - isAgeOver.setValue(ages); - isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(isAgeOver); - - dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - final ArrayList date = new ArrayList(); - date.add("16/12/2008"); - dateOfBirth.setValue(date); - dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(dateOfBirth); - - eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - final ArrayList idNumber = new ArrayList(); - idNumber.add("123456789PÑ"); - eIDNumber.setValue(idNumber); - eIDNumber.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - pal.add(eIDNumber); - - canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap address = new HashMap(); - - address.put("state", state); - address.put("municipalityCode", municipalityCode); - address.put("town", town); - address.put("postalCode", postalCode); - address.put("streetName", streetName); - address.put("streetNumber", streetNumber); - address.put("apartamentNumber", apartamentNumber); - - canRessAddress.setComplexValue(address); - pal.add(canRessAddress); - - newAttribute = new PersonalAttribute(); - newAttribute.setName("newAttribute2"); - newAttribute.setIsRequired(true); - newAttribute.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap values = new HashMap(); - - values.put("value1", "value1"); - values.put("value2", "value2"); - values.put("value3", "value3"); - values.put("value4", "value4"); - - newAttribute.setComplexValue(values); - pal.add(newAttribute); - - } - - /** - * Test generate authentication request without errors. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnResponse() throws STORKSAMLEngineException { - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - - final STORKAuthnResponse storkResponse = getEngine() - .generateSTORKAuthnResponse(authenRequest, response, ipAddress, - isNotHashing); - - authResponse = storkResponse.getTokenSaml(); - - LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(authResponse)); - - - } - - /** - * Test validation id parameter mandatory. - */ - @Test - public final void testResponseMandatoryId() { - final String identifier = authenRequest.getSamlId(); - authenRequest.setSamlId(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - - try { - getEngine().generateSTORKAuthnResponse(authenRequest, response, - ipAddress, isHashing); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - authenRequest.setSamlId(identifier); - LOG.error("Error"); - } - } - - /** - * Test generate authentication response in response to err1. - */ - @Test - public final void testResponseMandatoryIssuer() { - - final String issuer = authenRequest.getIssuer(); - authenRequest.setIssuer(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - - try { - getEngine().generateSTORKAuthnResponse(authenRequest, response, - ipAddress, isHashing); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - authenRequest.setIssuer(issuer); - LOG.error("Error"); - } - } - - /** - * Test generate authentication response assertion consumer null. - */ - @Test - public final void testResponseMandatoryAssertionConsumerServiceURL() { - final String asserConsumerUrl = authenRequest - .getAssertionConsumerServiceURL(); - authenRequest.setAssertionConsumerServiceURL(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - try { - getEngine().generateSTORKAuthnResponse(authenRequest, response, - ipAddress, isHashing); - fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - authenRequest.setAssertionConsumerServiceURL(asserConsumerUrl); - LOG.error("Error"); - } - } - - /** - * Test generate authentication response IP address null. - */ - @Test - public final void testResponseValidationIP() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - - try { - getEngine().generateSTORKAuthnResponse(authenRequest, response, null, - isHashing); - fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test generate authentication response with personal attribute list null. - */ - @Test - public final void testResponseMandatoryPersonalAttributeList() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(null); - - - try { - getEngine().generateSTORKAuthnResponse(authenRequest, response, - ipAddress, isHashing); - fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication response token null. - */ - @Test - public final void testResponseInvalidParametersToken() { - try { - getEngine().validateSTORKAuthnResponse(null, ipAddress); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication response IP null. - */ - @Test - public final void testResponseInvalidParametersIP() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setPersonalAttributeList(pal); - try { - authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAuthnResponse(authResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate authentication response parameter name wrong. - */ - @Test - public final void testResponseInvalidParametersAttr() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("AttrWrong"); - wrongList.add(worngAttr); - - - response.setPersonalAttributeList(wrongList); - try { - authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAuthnResponse(authResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate authentication response set null value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrSimpleValue() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("isAgeOver"); - worngAttr.setValue(null); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAuthnResponse(authResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate authentication response set null value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrNoValue() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("isAgeOver"); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAuthnResponse(authResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate authentication response set null value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrNoName() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAuthnResponse(authResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - /** - * Test validate authentication response set null complex value into attribute. - */ - @Test - public final void testResponseInvalidParametersAttrComplexValue() { - final STORKAuthnResponse response = new STORKAuthnResponse(); - final IPersonalAttributeList wrongList = new PersonalAttributeList(); - - final PersonalAttribute worngAttr = new PersonalAttribute(); - worngAttr.setName("isAgeOver"); - worngAttr.setComplexValue(null); - wrongList.add(worngAttr); - - response.setPersonalAttributeList(wrongList); - try { - authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - // In Conf1 ipValidate is false - getEngine().validateSTORKAuthnResponse(authResponse, null); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - - - /** - * Test validate authentication response IP distinct and disabled validation - * IP. - */ - @Test - public final void testResponseInvalidParametersIPDistinct() { - try { - // ipAddress origin "111.222.333.444" - // ipAddrValidation = false - // Subject Confirmation Bearer. - - getEngine().validateSTORKAuthnResponse(authResponse, "127.0.0.1"); - fail("validateAuthenticationResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test response invalid parameters invalid token. - */ - @Test - public final void testResponseInvalidParametersTokenMsg() { - try { - // ipAddress origin "111.222.333.444" - // Subject Confirmation Bearer. - getEngine().validateSTORKAuthnResponse("errorMessage".getBytes(), - ipAddress); - fail("validateAuthenticationResponse(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - /** - * Test validate authentication response is fail. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthenticationResponseIsFail() - throws STORKSAMLEngineException { - if (authResponse == null) - testGenerateAuthnResponse(); - - authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, - ipAddress); - - assertFalse("Generate incorrect response: ", authnResponse.isFail()); - } - - /** - * Test validate authentication response destination. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthenticationResponseDestination() - throws STORKSAMLEngineException { - authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, - ipAddress); - - assertEquals("Destination incorrect: ", - authnResponse.getInResponseTo(), authenRequest.getSamlId()); - } - - /** - * Test validate authentication response values. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - public final void testValidateAuthenticationResponseValuesComplex() - throws STORKSAMLEngineException { - authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, - ipAddress); - - assertEquals("Country incorrect:", authnResponse.getCountry(), "EN"); - - final Iterator iterator = authnResponse - .getPersonalAttributeList().iterator(); - - while (iterator.hasNext()) { - final PersonalAttribute attribute = iterator.next(); - if (attribute.getName().equalsIgnoreCase( - "canonicalResidenceAddress")) { - assertEquals("State incorrect: ", state, attribute - .getComplexValue().get("state")); - assertEquals("Municipality Code incorrect: ", municipalityCode, - attribute.getComplexValue().get("municipalityCode")); - assertEquals("Town incorrect: ", town, attribute - .getComplexValue().get("town")); - assertEquals("Postal code incorrect: ", postalCode, attribute - .getComplexValue().get("postalCode")); - assertEquals("Street name incorrect: ", streetName, attribute - .getComplexValue().get("streetName")); - assertEquals("Street number incorrect: ", streetNumber, - attribute.getComplexValue().get("streetNumber")); - assertEquals("Apartament number incorrect: ", apartamentNumber, - attribute.getComplexValue().get("apartamentNumber")); - } - } - } - - /** - * Test generate authenticate response fail in response to it's null. - * @throws STORKSAMLEngineException - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test //( expected=STORKSAMLEngineException.class) - public final void testGenerateAuthnResponseFailInResponseToNull() throws STORKSAMLEngineException { - final String identifier = authenRequest.getSamlId(); - authenRequest.setSamlId(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage(""); - - try { - authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - fail(ERROR_TXT); - } catch (STORKSAMLEngineException e) { - authenRequest.setSamlId(identifier); - LOG.error("Error"); - //throw new STORKSAMLEngineException(e); - } - } - - /** - * Test generate authenticate response fail assertion consumer URL err1. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnResponseFailAssertionConsumerUrlNull() - throws STORKSAMLEngineException { - - final String assertConsumerUrl = authenRequest - .getAssertionConsumerServiceURL(); - authenRequest.setAssertionConsumerServiceURL(null); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage(""); - - try { - authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - fail("generateAuthnResponseFail(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - authenRequest.setAssertionConsumerServiceURL(assertConsumerUrl); - LOG.error("Error"); - } - } - - /** - * Test generate authentication response fail code error err1. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthnResponseFailCodeErrorNull() - throws STORKSAMLEngineException { - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setStatusCode(null); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage(""); - - try { - authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - fail("generateAuthnResponseFail(...) should've thrown an STORKSAMLEngineException!"); - } catch (STORKSAMLEngineException e) { - LOG.error("Error"); - } - } - - - - - /** - * Test generate authentication request without errors. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthnResponse() throws STORKSAMLEngineException { - - IPersonalAttributeList palist = new PersonalAttributeList(); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(true); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - palist.add(isAgeOver); - - PersonalAttribute dateOfBirth = new PersonalAttribute(); - dateOfBirth.setName("dateOfBirth"); - dateOfBirth.setIsRequired(false); - final ArrayList date = new ArrayList(); - date.add("16/12/2008"); - dateOfBirth.setValue(date); - dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - palist.add(dateOfBirth); - - - PersonalAttribute eIDNumber = new PersonalAttribute(); - eIDNumber.setName("eIdentifier"); - eIDNumber.setIsRequired(true); - - final ArrayList idNumber = new ArrayList(); - idNumber.add("123456789PÑ"); - - final HashMap complex = new HashMap(); - complex.put("one", "two"); - - //eIDNumber.setValue(null); - //eIDNumber.setValue(idNumber); - //eIDNumber.setComplexValue(complex); - - eIDNumber.setStatus(STORKStatusCode.STATUS_NOT_AVAILABLE.toString()); - palist.add(eIDNumber); - - PersonalAttribute canRessAddress = new PersonalAttribute(); - canRessAddress.setName("canonicalResidenceAddress"); - canRessAddress.setIsRequired(true); - canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); - final HashMap address = new HashMap(); - - address.put("state", state); - address.put("municipalityCode", municipalityCode); - address.put("town", town); - address.put("postalCode", postalCode); - address.put("streetName", streetName); - address.put("streetNumber", streetNumber); - address.put("apartamentNumber", apartamentNumber); - - canRessAddress.setComplexValue(address); - palist.add(canRessAddress); - - - final STORKAuthnResponse response = new STORKAuthnResponse(); - - response.setPersonalAttributeList(palist); - - final STORKAuthnResponse storkResponse = getEngine() - .generateSTORKAuthnResponse(authenRequest, response, ipAddress, - isNotHashing); - - authResponse = storkResponse.getTokenSaml(); - LOG.info("Request id: " + authenRequest.getSamlId()); - - LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(authResponse)); - - - authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, - ipAddress); - - LOG.info("RESPONSE ID: " + authnResponse.getSamlId()); - LOG.info("RESPONSE IN_RESPONSE_TO: " + authnResponse.getInResponseTo()); - LOG.info("RESPONSE COUNTRY: " + authnResponse.getCountry()); - - } - - - - - - /** - * Test validate authentication response fail is fail. - * - * @throws STORKSAMLEngineException the STORKSAML engine exception - */ - @Test - public final void testValidateAuthenticationResponseFailIsFail() - throws STORKSAMLEngineException { - - final STORKAuthnResponse response = new STORKAuthnResponse(); - response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); - response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); - response.setMessage("message"); - - authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, - response, ipAddress, isNotHashing).getTokenSaml(); - - LOG.error("ERROR_FAIL: " + PEPSUtil.encodeSAMLToken(authResponse)); - - authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, - ipAddress); - - LOG.info("COUNTRY: " + authnResponse.getCountry()); - assertTrue("Generate incorrect response: ", authnResponse.isFail()); - } - - /** - * Test generate/validate response with signedDoc - * - * @throws STORKSAMLEngineException - * the STORKSAML engine exception - */ - @Test - public final void testGenerateAuthenResponseWithSignedDoc() - throws STORKSAMLEngineException { - - String signedDocResponse = " urn:oasis:names:tc:dss:1.0:resultmajor:Success PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzOlJlZmVyZW5jZSBJZD0iUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjT2JqZWN0LTk4NzMzY2RlLThiY2MtNDhhMC05Yjc3LTBlOTk5N2JkZDA1OCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkNrMVZxTmQ0NVFJdnEzQVpkOFhZUUx2RWh0QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjxkczpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMyNTaWduZWRQcm9wZXJ0aWVzIiBVUkk9IiNTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5BNVk5MW40cXBMZ3l0VFc3ZnhqWENVZVJ2NTQ9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI1NpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItS2V5SW5mbyI+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPlZQWDRuS0Z5UzZyRitGNmNSUjBQck5aZHc2Zz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9IlNpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItU2lnbmF0dXJlVmFsdWUiPkxiS04vL0M3WGt5eFR0WVRpQ1VScjhuWnp4QW1zdGNNZDBDZ0VBQ3JLMWR5Z1JIcUdjSzR4dHMrV0NVOFB5RXFXclJJVFl6SXV3LzcNClY0Wno5VFQ2MHA0S1RNZXd1UUw2NHNrRVN4MllnMkVkaWtTTyt0S3hXa2hyYVVzbVZiR2JQbW1jbUR2OTd0SER3ODg3NDdlRnE1RjUNCnYrYVZTeUF6MDNpVUttdVNlSDg9PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbyBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1LZXlJbmZvIj48ZHM6S2V5VmFsdWU+PGRzOlJTQUtleVZhbHVlPjxkczpNb2R1bHVzPnd1Y21qOXRJV3J2d2JTVFVEZndLbCtKdERNTUVSMGNMZDZEa0JTcjc5MHQrckdOakVTcVlqUndFSWVCbktvUUhQeDVIb1JlRjg4L3QNCnFZOStDaEVYcExITHM5cDVhWDdTREp1YnBRTWZwMXRERlgzNHl3Z3hTUXZjZWVKUVdCWGppZXVJbWZDMjFzNGJPY2dKYlYxaGJpZ1MNCnpPS1RRS3IxVHpkR1IrdVJ5MDA9PC9kczpNb2R1bHVzPjxkczpFeHBvbmVudD5BUUFCPC9kczpFeHBvbmVudD48L2RzOlJTQUtleVZhbHVlPjwvZHM6S2V5VmFsdWU+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJSW1UQ0NCNEdnQXdJQkFnSURBWFVVTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUlCT3pFTE1Ba0dBMVVFQmhNQ1JWTXhPekE1QmdOVg0KQkFvVE1rRm5aVzVqYVdFZ1EyRjBZV3hoYm1FZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUNoT1NVWWdVUzB3T0RBeE1UYzJMVWtwTVRRdw0KTWdZRFZRUUhFeXRRWVhOellYUm5aU0JrWlNCc1lTQkRiMjVqWlhCamFXOGdNVEVnTURnd01EZ2dRbUZ5WTJWc2IyNWhNUzR3TEFZRA0KVlFRTEV5VlRaWEoyWldseklGQjFZbXhwWTNNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVWRFZpMHlNVFV3TXdZRFZRUUxFeXhXWldkbA0KZFNCb2RIUndjem92TDNkM2R5NWpZWFJqWlhKMExtNWxkQzkyWlhKRFNVTXRNaUFvWXlrd016RTFNRE1HQTFVRUN4TXNSVzUwYVhSaA0KZENCd2RXSnNhV05oSUdSbElHTmxjblJwWm1sallXTnBieUJrWlNCamFYVjBZV1JoYm5NeEd6QVpCZ05WQkFNVEVsQlNSVkJTVDBSVg0KUTBOSlR5QkpSRU5oZERBZUZ3MHhNREF5TVRFeE9ESXlNRFJhRncweE5EQXlNVEF4T0RJeU1EUmFNSUd3TVFzd0NRWURWUVFHRXdKRg0KVXpFMU1ETUdBMVVFQ3hNc1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5U1VSRFlYUWdLR01wTURNeA0KRmpBVUJnTlZCQVFURFVKRlVreEJUa2RCSUZOUFZFOHhGekFWQmdOVkJDb1REazFCVWtsQklFVk9SMUpCUTBsQk1SSXdFQVlEVlFRRg0KRXdreE1EQXdNRGswTkZNeEpUQWpCZ05WQkFNVEhFMUJVa2xCSUVWT1IxSkJRMGxCSUVKRlVreEJUa2RCSUZOUFZFOHdnWjh3RFFZSg0KS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNTG5Kby9iU0ZxNzhHMGsxQTM4Q3BmaWJRekRCRWRIQzNlZzVBVXErL2RMZnF4ag0KWXhFcW1JMGNCQ0hnWnlxRUJ6OGVSNkVYaGZQUDdhbVBmZ29SRjZTeHk3UGFlV2wrMGd5Ym02VURINmRiUXhWOStNc0lNVWtMM0huaQ0KVUZnVjQ0bnJpSm53dHRiT0d6bklDVzFkWVc0b0VzemlrMENxOVU4M1JrZnJrY3ROQWdNQkFBR2pnZ1N3TUlJRXJEQU1CZ05WSFJNQg0KQWY4RUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRm9EQ0J6QVlEVlIwUkJJSEVNSUhCZ1E5aWMyOTBiMEJuYldGcGJDNWpiMjJrZ1lVdw0KZ1lJeEN6QUpCZ05WQkFZVEFrVlRNU3N3S1FZRFZRUUtGQ0pCWjhPb2JtTnBZU0JEWVhSaGJHRnVZU0JrWlNCRFpYSjBhV1pwWTJGag0KYWNPek1RNHdEQVlEVlFRTEV3VkpSRU5CVkRFUE1BMEdBMVVFQlJNR01ERTNOVEUwTVNVd0l3WURWUVFERXh4TlFWSkpRU0JGVGtkUw0KUVVOSlFTQkNSVkpNUVU1SFFTQlRUMVJQb0JBR0Npc0dBUVFCOVhnQkFRR2dBZ3dBb0JRR0RsWUVBQUVEQmdFRUFmVjRBUUVDb0FJTQ0KQURBZkJnTlZIUklFR0RBV2dSUmxZMTlwWkdOaGRFQmpZWFJqWlhKMExtNWxkREFkQmdOVkhRNEVGZ1FVQUZYanVOc2tCMk1seXZVQg0KaDdwOFRKMHVKMHd3Z2dGSUJnTlZIU01FZ2dFL01JSUJPNEFVUkt2Y2tVaE4xNGg0Q24vZ2RPRG42NzIzS1Z5aGdnRVBwSUlCQ3pDQw0KQVFjeEN6QUpCZ05WQkFZVEFrVlRNVHN3T1FZRFZRUUtFekpCWjJWdVkybGhJRU5oZEdGc1lXNWhJR1JsSUVObGNuUnBabWxqWVdOcA0KYnlBb1RrbEdJRkV0TURnd01URTNOaTFKS1RFb01DWUdBMVVFQ3hNZlUyVnlkbVZwY3lCUWRXSnNhV056SUdSbElFTmxjblJwWm1sag0KWVdOcGJ6RThNRG9HQTFVRUN4TXpWbVZuWlhVZ2FIUjBjSE02THk5M2QzY3VZMkYwWTJWeWRDNXVaWFF2ZG1WeWNISmxjSEp2WkhWag0KWTJsdklDaGpLVEF6TVRVd013WURWUVFMRXl4S1pYSmhjbkYxYVdFZ1JXNTBhWFJoZEhNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVOaA0KZEdGc1lXNWxjekVjTUJvR0ExVUVBeE1UVUZKRlVGSlBSRlZEUTBsUElFVkRMVUZEUTRJUWR3S1R0TTFFRVU5RkVQWFVZSGdnaERBZA0KQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdRd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdXZ01EUUdDQ3NHQVFVRg0KQndFQkJDZ3dKakFrQmdnckJnRUZCUWN3QVlZWWFIUjBjSE02THk5dlkzTndMbU5oZEdObGNuUXVibVYwTUJnR0NDc0dBUVVGQndFRA0KQkF3d0NqQUlCZ1lFQUk1R0FRRXdnWVlHQTFVZEh3Ui9NSDB3UEtBNm9EaUdObWgwZEhBNkx5OWxjSE5qWkM1allYUmpaWEowTG01bA0KZEM5amNtd3ZjSEpsY0hKdlpIVmpZMmx2WDJWakxXbGtZMkYwTG1OeWJEQTlvRHVnT1lZM2FIUjBjRG92TDJWd2MyTmtNaTVqWVhSag0KWlhKMExtNWxkQzlqY213dmNISmxjSEp2WkhWalkybHZYMlZqTFdsa1kyRjBMbU55YkRDQjlnWURWUjBnQklIdU1JSHJNSUhvQmd3cg0KQmdFRUFmVjRBUU1CVmdFd2dkY3dMQVlJS3dZQkJRVUhBZ0VXSUdoMGRIQnpPaTh2ZDNkM0xtTmhkR05sY25RdWJtVjBMM1psY2tsRQ0KUTJGME1JR21CZ2dyQmdFRkJRY0NBakNCbVJxQmxrRnhkV1Z6ZENEdnY3MXpJSFZ1SUdObGNuUnBabWxqWVhRZ2NHVnljMjl1WVd3Zw0KU1VSRFFWUXNJSEpsWTI5dVpXZDFkQ0JrSjJsa1pXNTBhV1pwWTJGajc3KzlMQ0J6YVdkdVlYUjFjbUVnYVNCNGFXWnlZWFFnWkdVZw0KWTJ4aGMzTmxJRElnYVc1a2FYWnBaSFZoYkM0Z1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5UkVOaA0KZERBdEJnTlZIUWtFSmpBa01CQUdDQ3NHQVFVRkJ3a0VNUVFUQWtWVE1CQUdDQ3NHQVFVRkJ3a0ZNUVFUQWtWVE1BMEdDU3FHU0liMw0KRFFFQkJRVUFBNElCQVFDcTc3ODBSR1FNTEIxZ2tkTk1mTFhuZ3FNb1JIR0taYnZ6a3JxSUFtVDhXQWQxRThyQXBoUjkveExKVXRwNQ0KbGJnMmZScjVibDJqOE9WREJLMlltRzQxaDhBRG40U1RJL0FwZU5JTlNmalpzNk5Sc25XekZ5ZlhYbVBDSFlGQi9YV3p5aW1DRXhndg0KdnR1SCszUUF3Y3dobjUwUExFdWh3NUM1dmxYN0x5NUs2ckxMTUZOVVVNYldWeTFoWmVsSy9DQlRjQWpJTzM4TlkrdllSQU1LU2Y0TQ0KL2daUXo0cUJlRlZKYTUyUjdOY0FxQ2ZyZkxmYVhwYkRTZzk4eG9CZU5zMmluR3p4OFVTZ0VyTFpqS0pzZG4vS2pURDlnUy9zVGRRNg0KUTdpZHFsZDJMRlZsTzIvYjk0Wk5aQmNTLzc4RU9EWGdkV2ZreVBDN1J3OHJlOW5JMy9qVDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjxkczpPYmplY3QgRW5jb2Rpbmc9ImJhc2U2NCIgSWQ9Ik9iamVjdC05ODczM2NkZS04YmNjLTQ4YTAtOWI3Ny0wZTk5OTdiZGQwNTgiIE1pbWVUeXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iPlNHVnNiRzhnVjI5eWJHUT08L2RzOk9iamVjdD48ZHM6T2JqZWN0Pjx4YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcyB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1RdWFsaWZ5aW5nUHJvcGVydGllcyIgVGFyZ2V0PSIjU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjx4YWRlczpTaWduZWRQcm9wZXJ0aWVzIElkPSJTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjx4YWRlczpTaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzPjx4YWRlczpTaWduaW5nVGltZT4yMDExLTAzLTIxVDExOjQ0OjQyKzAxOjAwPC94YWRlczpTaWduaW5nVGltZT48eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjx4YWRlczpDZXJ0Pjx4YWRlczpDZXJ0RGlnZXN0PjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT4zbTZ3OTlUb3lTZDlKcEJsMWdCazhEei9iYlU9PC9kczpEaWdlc3RWYWx1ZT48L3hhZGVzOkNlcnREaWdlc3Q+PHhhZGVzOklzc3VlclNlcmlhbD48ZHM6WDUwOUlzc3Vlck5hbWU+Q049UFJFUFJPRFVDQ0lPIElEQ2F0LCBPVT1FbnRpdGF0IHB1YmxpY2EgZGUgY2VydGlmaWNhY2lvIGRlIGNpdXRhZGFucywgT1U9VmVnZXUgaHR0cHM6Ly93d3cuY2F0Y2VydC5uZXQvdmVyQ0lDLTIgKGMpMDMsIE9VPVNlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8gRUNWLTIsIEw9UGFzc2F0Z2UgZGUgbGEgQ29uY2VwY2lvIDExIDA4MDA4IEJhcmNlbG9uYSwgTz1BZ2VuY2lhIENhdGFsYW5hIGRlIENlcnRpZmljYWNpbyAoTklGIFEtMDgwMTE3Ni1JKSwgQz1FUzwvZHM6WDUwOUlzc3Vlck5hbWU+PGRzOlg1MDlTZXJpYWxOdW1iZXI+OTU1MDg8L2RzOlg1MDlTZXJpYWxOdW1iZXI+PC94YWRlczpJc3N1ZXJTZXJpYWw+PC94YWRlczpDZXJ0PjwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjwveGFkZXM6U2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcz48eGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PHhhZGVzOkRhdGFPYmplY3RGb3JtYXQgT2JqZWN0UmVmZXJlbmNlPSIjUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyI+PHhhZGVzOk1pbWVUeXBlPmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTwveGFkZXM6TWltZVR5cGU+PHhhZGVzOkVuY29kaW5nPmJhc2U2NDwveGFkZXM6RW5jb2Rpbmc+PC94YWRlczpEYXRhT2JqZWN0Rm9ybWF0PjwveGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPjwveGFkZXM6UXVhbGlmeWluZ1Byb3BlcnRpZXM+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+ "; - - IPersonalAttributeList palist = new PersonalAttributeList(); - - PersonalAttribute signedDoc = new PersonalAttribute(); - signedDoc.setName("signedDoc"); - signedDoc.setIsRequired(false); - ArrayList signed = new ArrayList(); - signed.add(signedDocResponse); - signedDoc.setValue(signed); - palist.add(signedDoc); - - PersonalAttribute isAgeOver = new PersonalAttribute(); - isAgeOver.setName("isAgeOver"); - isAgeOver.setIsRequired(false); - ArrayList ages = new ArrayList(); - ages.add("16"); - ages.add("18"); - isAgeOver.setValue(ages); - palist.add(isAgeOver); - - authenRequest.setPersonalAttributeList(palist); - - final STORKAuthnResponse response = new STORKAuthnResponse(); - - response.setPersonalAttributeList(palist); - - final STORKAuthnResponse storkResponse = getEngine() - .generateSTORKAuthnResponse(authenRequest, response, ipAddress, - isNotHashing); - - authResponse = storkResponse.getTokenSaml(); - authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, - ipAddress); - - assertTrue("SignedDoc response should be the same: ", authnResponse - .getPersonalAttributeList().get("signedDoc").getValue().get(0) - .equals(signedDocResponse)); - - } -} diff --git a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/package-info.java b/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/package-info.java deleted file mode 100644 index 1c34e2ad5..000000000 --- a/id/server/SamlEngine-VIDP/src/test/java/eu/stork/peps/test/simple/package-info.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by - * the European Commission - subsequent versions of the EUPL (the "Licence"); - * You may not use this work except in compliance with the Licence. You may - * obtain a copy of the Licence at: - * - * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * Licence for the specific language governing permissions and limitations under - * the Licence. - */ - -/** - * Provides the classes necessary to create a SAML message. - * @since 1.0 - */ -package eu.stork.peps.test.simple; \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/SamlEngine.xml b/id/server/SamlEngine-VIDP/src/test/resources/SamlEngine.xml deleted file mode 100644 index 171e05f12..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/SamlEngine.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf0.xml b/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf0.xml deleted file mode 100644 index a9f2038b8..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf0.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - SWModule sign with JKS. - C:\opt\keystores\storkDemoKeysTest.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf1.xml b/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf1.xml deleted file mode 100644 index e556a7331..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf1.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - SWModule sign with JKS. - C:\opt\keystores\storkDemoKeysTest.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf2.xml b/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf2.xml deleted file mode 100644 index 3da1e33df..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - SWModule sign with JKS. - C:\opt\keystores\keyStoreCountry2.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf3.xml b/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf3.xml deleted file mode 100644 index 4c14a1711..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_Conf3.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - SWModule sign with JKS. - C:\opt\keystores\keyStoreCountry3.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_P11.xml b/id/server/SamlEngine-VIDP/src/test/resources/SignModule_P11.xml deleted file mode 100644 index c683d97c3..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/SignModule_P11.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - HWModule sign with interface PKCS11. - p11Config.cfg - ******* - CN=XXXXXXXXX - xxxxxxxxxxxxxx - PKCS11 - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf0.xml b/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf0.xml deleted file mode 100644 index 8c3a94601..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf0.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - - obtained - - - entity - - - - HTTP-POST - - - - - - - - - - false - - - true - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - - http://www.stork.gov.eu/1.0/textResidenceAddress - http://www.stork.gov.eu/1.0/canonicalResidenceAddress - - http://www.stork.gov.eu/1.0/title - http://www.stork.gov.eu/1.0/residencePermit - - http://www.stork.gov.eu/1.0/signedDoc - http://www.stork.gov.eu/1.0/citizen509Certificate - - http://www.stork.gov.eu/1.0/newAttribute1 - http://www.stork.gov.eu/1.0/newAttribute2 - http://www.stork.gov.eu/1.0/hasDegree - http://www.stork.gov.eu/1.0/mandateContent - - http://www.stork.gov.eu/1.0/docRequest - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf1.xml b/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf1.xml deleted file mode 100644 index ad04cc3df..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf1.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - - obtained - - - entity - - - - HTTP-POST - - - - - - - - - - false - - - true - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - - http://www.stork.gov.eu/1.0/textResidenceAddress - http://www.stork.gov.eu/1.0/canonicalResidenceAddress - - http://www.stork.gov.eu/1.0/title - http://www.stork.gov.eu/1.0/residencePermit - - http://www.stork.gov.eu/1.0/signedDoc - http://www.stork.gov.eu/1.0/citizen509Certificate - - http://www.stork.gov.eu/1.0/newAttribute1 - http://www.stork.gov.eu/1.0/newAttribute2 - http://www.stork.gov.eu/1.0/hasDegree - http://www.stork.gov.eu/1.0/mandateContent - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf2.xml b/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf2.xml deleted file mode 100644 index fd1db92ac..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf2.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - obtained - - - entity - - - - HTTP-POST - - false - false - false - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - false - - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf3.xml b/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf3.xml deleted file mode 100644 index bea40d274..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/StorkSamlEngine_Conf3.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - obtained - - - entity - - - - HTTP-POST - - false - false - false - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - http://www.stork.gov.eu/1.0/unknown - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml deleted file mode 100644 index 3764389e4..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - http://S-PEPS.gov.xx - - - - - - - - - - - - - BgPDTVCv7BhiWIs6HsC06jaHaag= - - - dIC61bGi6Jqp1zSVojpjaVq9WaZcDtNImXgo1Dyze5/hJA07Sy4TaHu+/IuLEC99aLjM6rxh2UUNqpPaQCFlF5eVkVv/c4gHEZVyevhjJKTidqmnuhlI78PGMx2thfxFsHsPcqHqOzy1Z6w18K1ds6APQP+aXI9TNKis+pykn4nJititYuiSseD0VY0F4QnXx+U6k3raoi1CAFE5fe7EuI/KfxuhhQLAbLq90Vm8R94ITBjfSS25mXstXNe9zppTSjDB42ld1TjDovDwXAn5OxiZasIEb5m68sRlxgoQ/2/+ZdYNNINFLAwkCbb8MiCbGASd626Bme0Kx+ropeWdxw== - - - MIIDXjCCAkagAwIBAgIEUk1MbDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJJUzESMBAGA1UE - CAwJUmV5a2phdmlrMRIwEAYDVQQHDAlSZXlramF2aWsxEDAOBgNVBAoMB0FkdmFuaWExDzANBgNV - BAsMBlNUT1JLMjEXMBUGA1UEAwwOc2FtbC1kZW1vLWNlcnQwHhcNMTMxMDAzMTA1MzEyWhcNMjMx - MDAzMTA1MzEyWjBxMQswCQYDVQQGEwJJUzESMBAGA1UECAwJUmV5a2phdmlrMRIwEAYDVQQHDAlS - ZXlramF2aWsxEDAOBgNVBAoMB0FkdmFuaWExDzANBgNVBAsMBlNUT1JLMjEXMBUGA1UEAwwOc2Ft - bC1kZW1vLWNlcnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkSgTxZkNRXZTKLB0c - 4oz7/8Dh56FX+0cYg7hjw4e8vn+ITXkxzrmUH57FtsvKln4mq1H0FHXL80u3IiWX8qY+QLgNeKeB - m85lXuyOb3wWpKAaQvpLAkejGLCx22AN2L0WZkKZV2puwRQVsRHCq6U6vToJXDZ6Ui6ltKsAl/ZS - 8qUFpiIvqD5ea4ohz4JsFE/uApRc7pbJ4VbOmAAeH/tQTayptq2kPb2vvUVk+2cH5J7UD+GCI88E - e+mS+C33tV9NmWUHL69mYEe8FXjumbKA5e9i1ejn9i0/BLUtHFonHnL9YFMim0foI7NNc5mNg9aw - vm0PuByVU3kuibQkqGBLAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAA9X5B4NBmVuhjECi+KOnRRX - 5oUV+jbYKhGZODDPi+F4Uo7ZtPFQ6sS3tE54+8AoDl5zQ5q5fDDVXhB42IIIjDxHKo8cBXie5FZ6 - mJtErvWZWYWdO0uV2OQAUALq2LieidqSFDJ+Pjl8w1New8oi3migwyE0jZo4Q97lJGDfJTruV0A2 - JE/Gt6QAAcWhhN2hZl92pYkIi5OeqHXyzBUp5vg8LLfNmeyziCAiXDC1Sy/aQU/cllZ3zFJMrqZM - s2xBpmB4sF1YRbIrr2OqEVE6M6DUx+pAQOd2uogV3AMT9D5MYpckI1jx/o/Tto7ju74nIVOskDiN - K0FR8izxcT0HixM= - - - - - 3 - false - false - false - - - - 16 - 18 - - - Sveinbjorn - - - ES/IS/1234567890 - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml deleted file mode 100644 index d64572829..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml +++ /dev/null @@ -1,15 +0,0 @@ -http://S-PEPS.gov.xxX1nUVB6qXdoKbJzNekiSo9ExLdw=ExCPHHC/9OhdhOl1Ou+43Qw1nvskpbMYMu9vqa7m16doxM2PIUmK7LUw7hZiKtjIdBxuhpca3OrjO8O6MuTDN1FksWoj+7B1KTLFtmspucT5O7Cu2OqhK5WIVuCaLuA7CD0N2UfFouRwR5NlLHyzn9Trd7IM5OjA41dGb5jqYl7Ir+62+MgjhZRlLooDzb5fDAczbxv9LHGiKRBpgnk40w3gDAvoSPNdEuKhZi8LPQWWNBvVi3N5ZmJmAIacZWBqePywXTjygmChWAc8p7ptAX6tw0hpBxyxoW3aaZZzWQNcwobTRYbn89fcM11gqIz/YK7VXtiQ7WEQt1enQD/GAA==MIIDIjCCAgqgAwIBAgIES6idsjANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJFUzEOMAwGA1UE -CAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExEzARBgNVBAMMCmxvY2Fs -LWRlbW8wHhcNMTMwODI4MTY0NzM1WhcNMTUwODI4MTY0NzM1WjBTMQswCQYDVQQGEwJFUzEOMAwG -A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExEzARBgNVBAMMCmxv -Y2FsLWRlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx+7zEQUbt8Ot9dByR5TuY -NPmTwaKhECtnkxYAx9tl+Ga3kFiv+dOSeDoQOhxkICG1ZMaG0Gtk0EQWjscC1cLwDXpAOdhOm5xh -ndFHxa3V3Y3zomFZA7A3nwP8wt17wDrc1xi2Ye8VrwO7Vjb/F8Rgutlcrvq+LF4g9nQLoRiKUq8w -NFvDlvhBbLr8hMVBMY/jY7tSQ85qLqKUkWRcoDttJjgWZoO1vpBS4m+FywtYdOoHnN6fv4Dvf1r2 -rNLgebgBvSfwznxiulwW6FBLasYX0rYKP7RfwG8TJ+FumOgAjADj2LdwK25RZNg44XU2V1z1Fp37 -fNXhfo08LpdD1ueFAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBADMRGTWOmadZyCoJNluV+M7LopjC -9WpFUj76X0cAoNXmt12zYqYe8hjRmBr6l2V/FXT3/TyWET1nILG46zwwAxslw3b2LvkhU+9QcuB8 -yC8TCJJ0kgsTZ/EUZPSbwUG7Nn2jkMiyjlyKcjSCQOzEKQyR1xYwyZG40+BPeGbYjmRgm6kcmCxY -USWoPwNyfke9gNT80f0pUj7wJ9YwWbTIz1rhf/h7rxoMYypXo+JXwaXW/Ra8v1uDcwfKpE5ZgwAU -nubLXF4A+H7/N7ZvB5XDwJ4W+99nuPsKfwacD8m1sflTXcEPzzhOq6iQ9anJT94/pMctnp827zXA -y66jvDrin5I=3ISfalsefalsefalseIS/IS/fbea6e68-0393-401b-b616-f767fff9418c \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml deleted file mode 100644 index becc689fe..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - http://S-PEPS.gov.xx - - hhQXDKNrJJ3Yy/pkZNZF4GlWrA/Xsx4CH9chgVa5HK4qZQvFXvZwegdw6U7rm7qv0zmI4xaLTv/bpmqJzEPfY3sIvrDRu9EouEKwtjbMbcvVQsx7I+j0yy7/cBcQJe3lRwQwyvazfYVbnSeGFxBN6WOHPqv6uInaQO/hXkicT3tBtm8o3UgUDY6c8wIMuD5A0hWTkL6z6f893AbdN85OQYAdHItNsQWeLOIeiGC918X7qqTfhFtBAB2oGVjlsSEqWox1jNqrPl1jjA0dP76m5SIVSqF8XcDR306ZB9GLJywOHKba0lxGLsXOAzJ+8u9jeixJ6VZKFqZg2Fhl/saKbg== - - - MIIDJzCCAg8CBEuonbIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMCRVMxDjAMBgNVBAgMBVNw - YWluMQ8wDQYDVQQHDAZNYWRyaWQxDjAMBgNVBAoMBUluZHJhMRgwFgYDVQQDDA9sb2NhbC1kZW1v - LWNlcnQwHhcNMTAwMzIzMTA1MzM4WhcNMTAwNjAxMTA1MzM4WjBYMQswCQYDVQQGEwJFUzEOMAwG - A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExGDAWBgNVBAMMD2xv - Y2FsLWRlbW8tY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfdQ1/mkM9sqqab - ri8qqqX4s0J6UEEXyF+0AjLU8RC4WMeYFSZ5tfwnyLsoXY0/9bZLXnBxSibQYaf4SnpZJhlVA4sU - 0d8qyEWA2OvXGDCm7uspGHG3CRQa7fpHsmHmfIAqho9XDlwpwJdx5gK4Edc6aArcMQfjqMhy1s1n - 6Of1i1lMGGsGrERIRY7biIQu/8nITbHH18sUAZMG1u/Q0Avi9O3LWyswHXUouZ818fWwG6xru2N5 - y6vtVO/SL3doRSdqYkEms93TgxTtaKg8XNe24zhNTte6nvWLaKesi2KzZGC57HU47HBFEs8NWk7z - 9BDf8uLyPz9VDahwVKzMto8CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAgpuReXQ7Dsfdoe5zzy2F - 6kn1qqtMkRGsBPKnDFCI/GkIZpBiqlfwdh6sipnFKWfKEDlPKN1kEhbkDR2GA1Cp4F4ZSL/HumZM - pWabRhDxhTPvHIFbbShPDJY93+jw/yQeaWgMuhw3WzdH9TrVoRZH0Q7sG1pIJo5/6IogIZwFvJHT - /NDutKmurU6Lw8Vnde8PfnQd+FTEhz0SEGyKkWjAuhGbJfseBy/z3L+MJq1rdSQ9PF7wXDvWNzJq - yaNBUWWBV1TskvkNZXcaguroVPy2XhA1aixlAajWEXLk6Uuj5UYqalrV/reNYvDvY0BV2CIn51r7 - Ppm8IFVTk8mYfX8/jw== - - - - - 3 - false - false - false - - - - 16 - 18 - - - Sveinbjörn - - - ES/IS/1234567890 - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml deleted file mode 100644 index 7ea486812..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - http://C-PEPS.gov.xx - - - - - - - - - - - - - yMOVS1T/yRiVh3L6IBM9rR9Ie3w= - - - d8e/RyNNPmnHRIzTIuRSnW6B60oWGBGxjRua/HvNxTuod0qSarYJxEedhY9Wl1Z9WYXlry28FuKjp3DA3HhzNaVd7A7QpFqNC4dnizSVWFjxlhmoE/Uv3Y/ha9P/fk6nbtHCSKW4kHSX7QfFLeggcLmUG0IULRF8UmRdQ0WerCl0aSZZeSp8J3LsFBPeWCRSwXgfiLn+RehggzZmQU6g0ssxrpnsYEAtjAiOli+YVQGuumsZGaJ8zHA/DgJ2FTGovNUyfuSUFLhd9nLlSqFs2Avnx0Ck7Q1dxDO5truOm6e285YLHqLaGdetFyPQAj/Z4w4RJ5u5X6d7rhBjTfRAAw== - - - MIIDJzCCAg8CBEuonbIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMCRVMxDjAMBgNVBAgMBVNw - YWluMQ8wDQYDVQQHDAZNYWRyaWQxDjAMBgNVBAoMBUluZHJhMRgwFgYDVQQDDA9sb2NhbC1kZW1v - LWNlcnQwHhcNMTAwMzIzMTA1MzM4WhcNMTAwNjAxMTA1MzM4WjBYMQswCQYDVQQGEwJFUzEOMAwG - A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExGDAWBgNVBAMMD2xv - Y2FsLWRlbW8tY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfdQ1/mkM9sqqab - ri8qqqX4s0J6UEEXyF+0AjLU8RC4WMeYFSZ5tfwnyLsoXY0/9bZLXnBxSibQYaf4SnpZJhlVA4sU - 0d8qyEWA2OvXGDCm7uspGHG3CRQa7fpHsmHmfIAqho9XDlwpwJdx5gK4Edc6aArcMQfjqMhy1s1n - 6Of1i1lMGGsGrERIRY7biIQu/8nITbHH18sUAZMG1u/Q0Avi9O3LWyswHXUouZ818fWwG6xru2N5 - y6vtVO/SL3doRSdqYkEms93TgxTtaKg8XNe24zhNTte6nvWLaKesi2KzZGC57HU47HBFEs8NWk7z - 9BDf8uLyPz9VDahwVKzMto8CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAgpuReXQ7Dsfdoe5zzy2F - 6kn1qqtMkRGsBPKnDFCI/GkIZpBiqlfwdh6sipnFKWfKEDlPKN1kEhbkDR2GA1Cp4F4ZSL/HumZM - pWabRhDxhTPvHIFbbShPDJY93+jw/yQeaWgMuhw3WzdH9TrVoRZH0Q7sG1pIJo5/6IogIZwFvJHT - /NDutKmurU6Lw8Vnde8PfnQd+FTEhz0SEGyKkWjAuhGbJfseBy/z3L+MJq1rdSQ9PF7wXDvWNzJq - yaNBUWWBV1TskvkNZXcaguroVPy2XhA1aixlAajWEXLk6Uuj5UYqalrV/reNYvDvY0BV2CIn51r7 - Ppm8IFVTk8mYfX8/jw== - - - - - - urn:oasis:names:tc:SAML:2.0:status:Success - - - http://C-PEPS.gov.xx - - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - - - - - - - http://S-PEPS.gov.xx - - - - - - - - - - - - 16/12/2008 - - - - 105 - IS - 10 - Gudrunartun - Reykjavik - - - - - value3 - value4 - value1 - value2 - - - - 16 - 18 - - - 123456789IS - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml deleted file mode 100644 index c48bfde95..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - http://S-PEPS.gov.xx - - - - - - - - - - - - - yzsqaxBNicOrixBUno5cL0CBOpE= - - - - Xycll1PF7hh3Xdykpr6nIr8Q6PQ6OxLIBBBugoGpAm/V4Hu7tKakHJp8TgtRWZ30jG5eolOXnJkC - wiaTVUFaQz7cNn27syRJkdA+eYlz9doiwUJ5eD1cAyddZYsNPpSeAj5UK45oN0qCH+/pI9mRw8Oi - YIN/BUEtXkoYTjPtkmA= - - - - MIIBmDCCAQECBEuWisIwDQYJKoZIhvcNAQEFBQAwEzERMA8GA1UEAxMIY291bnRyeTEwHhcNMTAw - MzA5MTc1MjAyWhcNMTAwNjA3MTc1MjAyWjATMREwDwYDVQQDEwhjb3VudHJ5MTCBnzANBgkqhkiG - 9w0BAQEFAAOBjQAwgYkCgYEAnb2gcchwxvJBclcsfCBWJnYefLJYQnDGCQ3RUtYZc26JznnLXclu - h1XfLJlWgYk/pFKz7B9KfJztal47c6mBfisnxjhdcLqcbXOuRIm7E8TZPzdbHEd60WHPDv20jr+r - /WkOQs12tKQMbgDX2wtBBcJODLYCDiYa1oQsnyhdOGkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBk - 3luVRc0EqEE1zZeYvRPi5a2yOZfI9H+/rXI1qNLwmICnuJX++ukUbqJHm/FV1iSPM9O9oqzifJ/K - eKL5EcUugJ76Tu5XO8za2FoJvYr+jIZDsEkCg+OSzcp/eljiWAIh2enZcQ/ON6QxWXeSNJPH0xOq - KAoZgbUK0Zld3Dsheg== - - - - - 3 - EDU001 - OXF001 - APP001 - EN - true - true - true - - - 16 - 18 - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml deleted file mode 100644 index 8766f9a8b..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - http://S-PEPS.gov.xx - - - S6nY97RSCUJXq3HZ5obSLCI341LvtAA3vHjR1FWxrIMDPACQMqlNWBYNnRP1RiZiJV6x0RieH+SR - Vkiy03jYyhr0XkwAE5Wd6Huf+zIbeTXjZkdQj7JpAXoB+ky4G/+L0deamvsP3eO7ZJ4grady4gmC - Xt8p8tK3EoMocZse2hw= - - - - MIIBkTCB+wIESpT8bTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVzdG9yazAeFw0wOTA4MjYw - OTEyMTNaFw0wOTExMjQwOTEyMTNaMBAxDjAMBgNVBAMTBXN0b3JrMIGfMA0GCSqGSIb3DQEBAQUA - A4GNADCBiQKBgQDK/QL8NuMd41I1lObObeRA6DaM8bjeYqIz5mg5WnnZv4jlcK7Gq89Lk6htXRFl - lAXpDYhI3zolMIMHEMZ3zQQPc7lgTV6Bbz9uD2YTJ9Kx55e8Y6Y49DO+TiiejGJxTzTFUcuBJHaK - ipuvLVd1a8N3RAnaGSUOozhrTqxba82mEwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFJgeS18nhUl - r7WnvSn9FlkI94U//Hk3iZLc3/cScTu7D7Y/J0eUq4TF8PsSzWX5khGuqrTkswNgfEtl2IpACQ2w - kB8+RxeRNdddQlGHlO4ZqnpvxXBwSouiy2yUeAo0y++vMFm6DO4sxfk8eTtimPDo5SzBtjtGtbqS - 3cyl/wz8 - - - - - 3 - false - false - false - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml b/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml deleted file mode 100644 index 1b1e1646c..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - http://S-PEPS.gov.xx - - - S6nY97RSCUJXq3HZ5obSLCI341LvtAA3vHjR1FWxrIMDPACQMqlNWBYNnRP1RiZiJV6x0RieH+SR - Vkiy03jYyhr0XkwAE5Wd6Huf+zIbeTXjZkdQj7JpAXoB+ky4G/+L0deamvsP3eO7ZJ4grady4gmC - Xt8p8tK3EoMocZse2hw= - - - - MIIBkTCB+wIESpT8bTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVzdG9yazAeFw0wOTA4MjYw - OTEyMTNaFw0wOTExMjQwOTEyMTNaMBAxDjAMBgNVBAMTBXN0b3JrMIGfMA0GCSqGSIb3DQEBAQUA - A4GNADCBiQKBgQDK/QL8NuMd41I1lObObeRA6DaM8bjeYqIz5mg5WnnZv4jlcK7Gq89Lk6htXRFl - lAXpDYhI3zolMIMHEMZ3zQQPc7lgTV6Bbz9uD2YTJ9Kx55e8Y6Y49DO+TiiejGJxTzTFUcuBJHaK - ipuvLVd1a8N3RAnaGSUOozhrTqxba82mEwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFJgeS18nhUl - r7WnvSn9FlkI94U//Hk3iZLc3/cScTu7D7Y/J0eUq4TF8PsSzWX5khGuqrTkswNgfEtl2IpACQ2w - kB8+RxeRNdddQlGHlO4ZqnpvxXBwSouiy2yUeAo0y++vMFm6DO4sxfk8eTtimPDo5SzBtjtGtbqS - 3cyl/wz8 - - - - - 3 - false - false - false - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/logback-test.xml b/id/server/SamlEngine-VIDP/src/test/resources/logback-test.xml deleted file mode 100644 index 99d7d353a..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/logback-test.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/src/test/resources/p11Conf.cfg b/id/server/SamlEngine-VIDP/src/test/resources/p11Conf.cfg deleted file mode 100644 index bd9f357ce..000000000 --- a/id/server/SamlEngine-VIDP/src/test/resources/p11Conf.cfg +++ /dev/null @@ -1,24 +0,0 @@ -//ATTRIBUTE VALUE -//name name suffix of this provider instance -//library pathname of PKCS#11 implementation -//slotListIndex slot index - -//PREFIX DESCRIPTION -//CKO_ Object class -//CKA_ Attribute -//CKK_ Key type - -//attributes(operation, keytype, keyalgorithm) = { -// name1 = value1 -// [...] -//} - -name=nameProvider -library=library.dll -slotListIndex=0 -attributes(*,CKO_PUBLIC_KEY,CKK_RSA)={ - CKA_VERIFY=true -} -attributes(*,CKO_PRIVATE_KEY,CKK_RSA)={ - CKA_SIGN=true -} \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/SamlEngine-1.4.0-sources.jar b/id/server/SamlEngine-VIDP/target/SamlEngine-1.4.0-sources.jar deleted file mode 100644 index 447c8d8f8..000000000 Binary files a/id/server/SamlEngine-VIDP/target/SamlEngine-1.4.0-sources.jar and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngine.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngine.class deleted file mode 100644 index d64cbf35a..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngine.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngineUtils.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngineUtils.class deleted file mode 100644 index cad1781ba..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/SAMLEngineUtils.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/STORKSAMLEngine.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/STORKSAMLEngine.class deleted file mode 100644 index de028b751..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/STORKSAMLEngine.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/X509PrincipalUtil.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/X509PrincipalUtil.class deleted file mode 100644 index 6209f6eb5..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/X509PrincipalUtil.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/AuthenticationAttributes.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/AuthenticationAttributes.class deleted file mode 100644 index f9c79ca30..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/AuthenticationAttributes.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CitizenCountryCode.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CitizenCountryCode.class deleted file mode 100644 index 7da2c0e42..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CitizenCountryCode.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomAttributeQuery.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomAttributeQuery.class deleted file mode 100644 index b12c0987d..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomAttributeQuery.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.class deleted file mode 100644 index f6d4055fe..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.class deleted file mode 100644 index 082d6024f..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.class deleted file mode 100644 index 72f9d84a6..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDSectorShare.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDSectorShare.class deleted file mode 100644 index 57778783e..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/EIDSectorShare.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/QAAAttribute.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/QAAAttribute.class deleted file mode 100644 index ebe9ed6dd..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/QAAAttribute.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttribute.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttribute.class deleted file mode 100644 index 2a485d3b5..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttribute.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttributes.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttributes.class deleted file mode 100644 index 0c2fc75ef..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/RequestedAttributes.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLCore.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLCore.class deleted file mode 100644 index 25ac4c69e..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLCore.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLEngineSignI.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLEngineSignI.class deleted file mode 100644 index a6c30d388..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SAMLEngineSignI.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPApplication.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPApplication.class deleted file mode 100644 index 8f8939d20..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPApplication.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPCountry.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPCountry.class deleted file mode 100644 index 00982e2a9..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPCountry.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPID.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPID.class deleted file mode 100644 index 3d686cfc2..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPID.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInformation.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInformation.class deleted file mode 100644 index 493bdb2de..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInformation.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInstitution.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInstitution.class deleted file mode 100644 index caf16dc7d..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPInstitution.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPSector.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPSector.class deleted file mode 100644 index bcaef2a96..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/SPSector.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/STORKSAMLCore.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/STORKSAMLCore.class deleted file mode 100644 index 3de661743..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/STORKSAMLCore.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.class deleted file mode 100644 index 8f898214e..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.class deleted file mode 100644 index 38f3bc5b6..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.class deleted file mode 100644 index c52b2e7db..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.class deleted file mode 100644 index 8efebb5e6..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.class deleted file mode 100644 index 92c532e6e..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.class deleted file mode 100644 index 79b677b07..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.class deleted file mode 100644 index 345fa960b..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.class deleted file mode 100644 index 8e36a67ac..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.class deleted file mode 100644 index 04cb2a479..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.class deleted file mode 100644 index fa1c1d3da..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.class deleted file mode 100644 index cb5fbd326..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.class deleted file mode 100644 index acffd5114..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.class deleted file mode 100644 index 069e677c8..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.class deleted file mode 100644 index 2e95d47c9..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.class deleted file mode 100644 index 2861c96fa..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.class deleted file mode 100644 index 4a3efcf63..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.class deleted file mode 100644 index 030b16a43..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.class deleted file mode 100644 index 255c5fdb6..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.class deleted file mode 100644 index 01b48443b..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.class deleted file mode 100644 index 94d8fc317..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.class deleted file mode 100644 index f8faa5b80..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.class deleted file mode 100644 index 3cef6c8c0..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.class deleted file mode 100644 index 1a270f4e2..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.class deleted file mode 100644 index d13aee589..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.class deleted file mode 100644 index 2e3019255..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.class deleted file mode 100644 index cac3037cf..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.class deleted file mode 100644 index dd88db632..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.class deleted file mode 100644 index 7aef0f4fd..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.class deleted file mode 100644 index 013cb7e68..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.class deleted file mode 100644 index 9340a804b..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.class deleted file mode 100644 index 6e47992f2..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.class deleted file mode 100644 index 783031d78..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.class deleted file mode 100644 index 06a34b622..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.class deleted file mode 100644 index ecb7104f6..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.class deleted file mode 100644 index 7ae6d8f45..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.class deleted file mode 100644 index 2c878b0e7..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.class deleted file mode 100644 index cf03e83df..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.class deleted file mode 100644 index a60f07621..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.class deleted file mode 100644 index cdf24dffc..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.class deleted file mode 100644 index ce812be90..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.class deleted file mode 100644 index ca335f0bf..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.class deleted file mode 100644 index 2137135e4..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.class deleted file mode 100644 index d8b4e1c3f..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.class deleted file mode 100644 index d1179ef11..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.class deleted file mode 100644 index 79b4fed37..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.class deleted file mode 100644 index 762681c9d..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDImpl.class deleted file mode 100644 index 98285837e..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.class deleted file mode 100644 index 827f8de30..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.class deleted file mode 100644 index 8f5f14fe2..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.class deleted file mode 100644 index c3bd1f9b4..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.class deleted file mode 100644 index 9acde181f..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.class deleted file mode 100644 index 09863dfee..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.class deleted file mode 100644 index 0b6c4d39f..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.class deleted file mode 100644 index 05515dd54..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.class deleted file mode 100644 index 0a9807fd0..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.class deleted file mode 100644 index 230330a60..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.class deleted file mode 100644 index d1897e4fd..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.class deleted file mode 100644 index e498256ae..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.class deleted file mode 100644 index 58d18fe48..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.class deleted file mode 100644 index 097e76b80..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.class deleted file mode 100644 index 99a0c19ee..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignHW.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignHW.class deleted file mode 100644 index dc7acbc35..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignHW.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.class deleted file mode 100644 index 96b8cf7c7..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignP12.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignP12.class deleted file mode 100644 index ef11ce208..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignP12.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignSW.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignSW.class deleted file mode 100644 index 87726f6ac..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/SignSW.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.class deleted file mode 100644 index 5c62d013b..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.class deleted file mode 100644 index 3749dbffe..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.class deleted file mode 100644 index be892f684..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.class deleted file mode 100644 index 850171df3..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.class deleted file mode 100644 index 61f4e0b2f..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.class deleted file mode 100644 index b6db104c7..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.class deleted file mode 100644 index b31a1d586..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.class deleted file mode 100644 index 2eda7b183..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationCreator.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationCreator.class deleted file mode 100644 index 97944fb9c..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationCreator.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationEngine.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationEngine.class deleted file mode 100644 index df1854e68..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationEngine.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationReader.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationReader.class deleted file mode 100644 index c1edf063d..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationReader.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationSingleton.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationSingleton.class deleted file mode 100644 index 15f565fc9..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/ConfigurationSingleton.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/InstanceEngine.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/InstanceEngine.class deleted file mode 100644 index 10ebf1a10..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/configuration/InstanceEngine.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/SAMLEngineException.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/SAMLEngineException.class deleted file mode 100644 index 1fc62d91c..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/SAMLEngineException.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineException.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineException.class deleted file mode 100644 index 7ff0077b6..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineException.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.class b/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.class deleted file mode 100644 index b19b665df..000000000 Binary files a/id/server/SamlEngine-VIDP/target/classes/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/maven-archiver/pom.properties b/id/server/SamlEngine-VIDP/target/maven-archiver/pom.properties deleted file mode 100644 index c3e05d54d..000000000 --- a/id/server/SamlEngine-VIDP/target/maven-archiver/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven -#Mon Mar 17 17:10:39 CET 2014 -version=1.4.0 -groupId=eu.stork -artifactId=SamlEngine diff --git a/id/server/SamlEngine-VIDP/target/test-classes/SamlEngine.xml b/id/server/SamlEngine-VIDP/target/test-classes/SamlEngine.xml deleted file mode 100644 index 171e05f12..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/SamlEngine.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf0.xml b/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf0.xml deleted file mode 100644 index a9f2038b8..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf0.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - SWModule sign with JKS. - C:\opt\keystores\storkDemoKeysTest.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf1.xml b/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf1.xml deleted file mode 100644 index e556a7331..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf1.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - SWModule sign with JKS. - C:\opt\keystores\storkDemoKeysTest.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf2.xml b/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf2.xml deleted file mode 100644 index 3da1e33df..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - SWModule sign with JKS. - C:\opt\keystores\keyStoreCountry2.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf3.xml b/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf3.xml deleted file mode 100644 index 4c14a1711..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_Conf3.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - SWModule sign with JKS. - C:\opt\keystores\keyStoreCountry3.jks - local-demo - local-demo - CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES - 4BA89DB2 - JKS - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_P11.xml b/id/server/SamlEngine-VIDP/target/test-classes/SignModule_P11.xml deleted file mode 100644 index c683d97c3..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/SignModule_P11.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - HWModule sign with interface PKCS11. - p11Config.cfg - ******* - CN=XXXXXXXXX - xxxxxxxxxxxxxx - PKCS11 - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf0.xml b/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf0.xml deleted file mode 100644 index 8c3a94601..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf0.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - - obtained - - - entity - - - - HTTP-POST - - - - - - - - - - false - - - true - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - - http://www.stork.gov.eu/1.0/textResidenceAddress - http://www.stork.gov.eu/1.0/canonicalResidenceAddress - - http://www.stork.gov.eu/1.0/title - http://www.stork.gov.eu/1.0/residencePermit - - http://www.stork.gov.eu/1.0/signedDoc - http://www.stork.gov.eu/1.0/citizen509Certificate - - http://www.stork.gov.eu/1.0/newAttribute1 - http://www.stork.gov.eu/1.0/newAttribute2 - http://www.stork.gov.eu/1.0/hasDegree - http://www.stork.gov.eu/1.0/mandateContent - - http://www.stork.gov.eu/1.0/docRequest - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf1.xml b/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf1.xml deleted file mode 100644 index ad04cc3df..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf1.xml +++ /dev/null @@ -1,85 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - - obtained - - - entity - - - - HTTP-POST - - - - - - - - - - false - - - true - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - - http://www.stork.gov.eu/1.0/textResidenceAddress - http://www.stork.gov.eu/1.0/canonicalResidenceAddress - - http://www.stork.gov.eu/1.0/title - http://www.stork.gov.eu/1.0/residencePermit - - http://www.stork.gov.eu/1.0/signedDoc - http://www.stork.gov.eu/1.0/citizen509Certificate - - http://www.stork.gov.eu/1.0/newAttribute1 - http://www.stork.gov.eu/1.0/newAttribute2 - http://www.stork.gov.eu/1.0/hasDegree - http://www.stork.gov.eu/1.0/mandateContent - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf2.xml b/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf2.xml deleted file mode 100644 index fd1db92ac..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf2.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - obtained - - - entity - - - - HTTP-POST - - false - false - false - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - false - - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf3.xml b/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf3.xml deleted file mode 100644 index bea40d274..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/StorkSamlEngine_Conf3.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - SAML constants for AuthnRequests and Responses. - - - unspecified - - obtained - - - entity - - - - HTTP-POST - - false - false - false - - - http://S-PEPS.gov.xx - - - http://C-PEPS.gov.xx - - - 300 - - - false - - - http://www.stork.gov.eu/1.0/eIdentifier - http://www.stork.gov.eu/1.0/givenName - http://www.stork.gov.eu/1.0/surname - http://www.stork.gov.eu/1.0/inheritedFamilyName - http://www.stork.gov.eu/1.0/adoptedFamilyName - http://www.stork.gov.eu/1.0/gender - http://www.stork.gov.eu/1.0/dateOfBirth - http://www.stork.gov.eu/1.0/countryCodeOfBirth - http://www.stork.gov.eu/1.0/nationalityCode - http://www.stork.gov.eu/1.0/maritalStatus - http://www.stork.gov.eu/1.0/residenceAddress - http://www.stork.gov.eu/1.0/eMail - http://www.stork.gov.eu/1.0/academicTitle - http://www.stork.gov.eu/1.0/pseudonym - http://www.stork.gov.eu/1.0/age - http://www.stork.gov.eu/1.0/isAgeOver - http://www.stork.gov.eu/1.0/unknown - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml deleted file mode 100644 index 3764389e4..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - http://S-PEPS.gov.xx - - - - - - - - - - - - - BgPDTVCv7BhiWIs6HsC06jaHaag= - - - dIC61bGi6Jqp1zSVojpjaVq9WaZcDtNImXgo1Dyze5/hJA07Sy4TaHu+/IuLEC99aLjM6rxh2UUNqpPaQCFlF5eVkVv/c4gHEZVyevhjJKTidqmnuhlI78PGMx2thfxFsHsPcqHqOzy1Z6w18K1ds6APQP+aXI9TNKis+pykn4nJititYuiSseD0VY0F4QnXx+U6k3raoi1CAFE5fe7EuI/KfxuhhQLAbLq90Vm8R94ITBjfSS25mXstXNe9zppTSjDB42ld1TjDovDwXAn5OxiZasIEb5m68sRlxgoQ/2/+ZdYNNINFLAwkCbb8MiCbGASd626Bme0Kx+ropeWdxw== - - - MIIDXjCCAkagAwIBAgIEUk1MbDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJJUzESMBAGA1UE - CAwJUmV5a2phdmlrMRIwEAYDVQQHDAlSZXlramF2aWsxEDAOBgNVBAoMB0FkdmFuaWExDzANBgNV - BAsMBlNUT1JLMjEXMBUGA1UEAwwOc2FtbC1kZW1vLWNlcnQwHhcNMTMxMDAzMTA1MzEyWhcNMjMx - MDAzMTA1MzEyWjBxMQswCQYDVQQGEwJJUzESMBAGA1UECAwJUmV5a2phdmlrMRIwEAYDVQQHDAlS - ZXlramF2aWsxEDAOBgNVBAoMB0FkdmFuaWExDzANBgNVBAsMBlNUT1JLMjEXMBUGA1UEAwwOc2Ft - bC1kZW1vLWNlcnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkSgTxZkNRXZTKLB0c - 4oz7/8Dh56FX+0cYg7hjw4e8vn+ITXkxzrmUH57FtsvKln4mq1H0FHXL80u3IiWX8qY+QLgNeKeB - m85lXuyOb3wWpKAaQvpLAkejGLCx22AN2L0WZkKZV2puwRQVsRHCq6U6vToJXDZ6Ui6ltKsAl/ZS - 8qUFpiIvqD5ea4ohz4JsFE/uApRc7pbJ4VbOmAAeH/tQTayptq2kPb2vvUVk+2cH5J7UD+GCI88E - e+mS+C33tV9NmWUHL69mYEe8FXjumbKA5e9i1ejn9i0/BLUtHFonHnL9YFMim0foI7NNc5mNg9aw - vm0PuByVU3kuibQkqGBLAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAA9X5B4NBmVuhjECi+KOnRRX - 5oUV+jbYKhGZODDPi+F4Uo7ZtPFQ6sS3tE54+8AoDl5zQ5q5fDDVXhB42IIIjDxHKo8cBXie5FZ6 - mJtErvWZWYWdO0uV2OQAUALq2LieidqSFDJ+Pjl8w1New8oi3migwyE0jZo4Q97lJGDfJTruV0A2 - JE/Gt6QAAcWhhN2hZl92pYkIi5OeqHXyzBUp5vg8LLfNmeyziCAiXDC1Sy/aQU/cllZ3zFJMrqZM - s2xBpmB4sF1YRbIrr2OqEVE6M6DUx+pAQOd2uogV3AMT9D5MYpckI1jx/o/Tto7ju74nIVOskDiN - K0FR8izxcT0HixM= - - - - - 3 - false - false - false - - - - 16 - 18 - - - Sveinbjorn - - - ES/IS/1234567890 - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml deleted file mode 100644 index d64572829..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml +++ /dev/null @@ -1,15 +0,0 @@ -http://S-PEPS.gov.xxX1nUVB6qXdoKbJzNekiSo9ExLdw=ExCPHHC/9OhdhOl1Ou+43Qw1nvskpbMYMu9vqa7m16doxM2PIUmK7LUw7hZiKtjIdBxuhpca3OrjO8O6MuTDN1FksWoj+7B1KTLFtmspucT5O7Cu2OqhK5WIVuCaLuA7CD0N2UfFouRwR5NlLHyzn9Trd7IM5OjA41dGb5jqYl7Ir+62+MgjhZRlLooDzb5fDAczbxv9LHGiKRBpgnk40w3gDAvoSPNdEuKhZi8LPQWWNBvVi3N5ZmJmAIacZWBqePywXTjygmChWAc8p7ptAX6tw0hpBxyxoW3aaZZzWQNcwobTRYbn89fcM11gqIz/YK7VXtiQ7WEQt1enQD/GAA==MIIDIjCCAgqgAwIBAgIES6idsjANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJFUzEOMAwGA1UE -CAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExEzARBgNVBAMMCmxvY2Fs -LWRlbW8wHhcNMTMwODI4MTY0NzM1WhcNMTUwODI4MTY0NzM1WjBTMQswCQYDVQQGEwJFUzEOMAwG -A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExEzARBgNVBAMMCmxv -Y2FsLWRlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx+7zEQUbt8Ot9dByR5TuY -NPmTwaKhECtnkxYAx9tl+Ga3kFiv+dOSeDoQOhxkICG1ZMaG0Gtk0EQWjscC1cLwDXpAOdhOm5xh -ndFHxa3V3Y3zomFZA7A3nwP8wt17wDrc1xi2Ye8VrwO7Vjb/F8Rgutlcrvq+LF4g9nQLoRiKUq8w -NFvDlvhBbLr8hMVBMY/jY7tSQ85qLqKUkWRcoDttJjgWZoO1vpBS4m+FywtYdOoHnN6fv4Dvf1r2 -rNLgebgBvSfwznxiulwW6FBLasYX0rYKP7RfwG8TJ+FumOgAjADj2LdwK25RZNg44XU2V1z1Fp37 -fNXhfo08LpdD1ueFAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBADMRGTWOmadZyCoJNluV+M7LopjC -9WpFUj76X0cAoNXmt12zYqYe8hjRmBr6l2V/FXT3/TyWET1nILG46zwwAxslw3b2LvkhU+9QcuB8 -yC8TCJJ0kgsTZ/EUZPSbwUG7Nn2jkMiyjlyKcjSCQOzEKQyR1xYwyZG40+BPeGbYjmRgm6kcmCxY -USWoPwNyfke9gNT80f0pUj7wJ9YwWbTIz1rhf/h7rxoMYypXo+JXwaXW/Ra8v1uDcwfKpE5ZgwAU -nubLXF4A+H7/N7ZvB5XDwJ4W+99nuPsKfwacD8m1sflTXcEPzzhOq6iQ9anJT94/pMctnp827zXA -y66jvDrin5I=3ISfalsefalsefalseIS/IS/fbea6e68-0393-401b-b616-f767fff9418c \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml deleted file mode 100644 index becc689fe..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - http://S-PEPS.gov.xx - - hhQXDKNrJJ3Yy/pkZNZF4GlWrA/Xsx4CH9chgVa5HK4qZQvFXvZwegdw6U7rm7qv0zmI4xaLTv/bpmqJzEPfY3sIvrDRu9EouEKwtjbMbcvVQsx7I+j0yy7/cBcQJe3lRwQwyvazfYVbnSeGFxBN6WOHPqv6uInaQO/hXkicT3tBtm8o3UgUDY6c8wIMuD5A0hWTkL6z6f893AbdN85OQYAdHItNsQWeLOIeiGC918X7qqTfhFtBAB2oGVjlsSEqWox1jNqrPl1jjA0dP76m5SIVSqF8XcDR306ZB9GLJywOHKba0lxGLsXOAzJ+8u9jeixJ6VZKFqZg2Fhl/saKbg== - - - MIIDJzCCAg8CBEuonbIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMCRVMxDjAMBgNVBAgMBVNw - YWluMQ8wDQYDVQQHDAZNYWRyaWQxDjAMBgNVBAoMBUluZHJhMRgwFgYDVQQDDA9sb2NhbC1kZW1v - LWNlcnQwHhcNMTAwMzIzMTA1MzM4WhcNMTAwNjAxMTA1MzM4WjBYMQswCQYDVQQGEwJFUzEOMAwG - A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExGDAWBgNVBAMMD2xv - Y2FsLWRlbW8tY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfdQ1/mkM9sqqab - ri8qqqX4s0J6UEEXyF+0AjLU8RC4WMeYFSZ5tfwnyLsoXY0/9bZLXnBxSibQYaf4SnpZJhlVA4sU - 0d8qyEWA2OvXGDCm7uspGHG3CRQa7fpHsmHmfIAqho9XDlwpwJdx5gK4Edc6aArcMQfjqMhy1s1n - 6Of1i1lMGGsGrERIRY7biIQu/8nITbHH18sUAZMG1u/Q0Avi9O3LWyswHXUouZ818fWwG6xru2N5 - y6vtVO/SL3doRSdqYkEms93TgxTtaKg8XNe24zhNTte6nvWLaKesi2KzZGC57HU47HBFEs8NWk7z - 9BDf8uLyPz9VDahwVKzMto8CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAgpuReXQ7Dsfdoe5zzy2F - 6kn1qqtMkRGsBPKnDFCI/GkIZpBiqlfwdh6sipnFKWfKEDlPKN1kEhbkDR2GA1Cp4F4ZSL/HumZM - pWabRhDxhTPvHIFbbShPDJY93+jw/yQeaWgMuhw3WzdH9TrVoRZH0Q7sG1pIJo5/6IogIZwFvJHT - /NDutKmurU6Lw8Vnde8PfnQd+FTEhz0SEGyKkWjAuhGbJfseBy/z3L+MJq1rdSQ9PF7wXDvWNzJq - yaNBUWWBV1TskvkNZXcaguroVPy2XhA1aixlAajWEXLk6Uuj5UYqalrV/reNYvDvY0BV2CIn51r7 - Ppm8IFVTk8mYfX8/jw== - - - - - 3 - false - false - false - - - - 16 - 18 - - - Sveinbjörn - - - ES/IS/1234567890 - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml deleted file mode 100644 index 7ea486812..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - http://C-PEPS.gov.xx - - - - - - - - - - - - - yMOVS1T/yRiVh3L6IBM9rR9Ie3w= - - - d8e/RyNNPmnHRIzTIuRSnW6B60oWGBGxjRua/HvNxTuod0qSarYJxEedhY9Wl1Z9WYXlry28FuKjp3DA3HhzNaVd7A7QpFqNC4dnizSVWFjxlhmoE/Uv3Y/ha9P/fk6nbtHCSKW4kHSX7QfFLeggcLmUG0IULRF8UmRdQ0WerCl0aSZZeSp8J3LsFBPeWCRSwXgfiLn+RehggzZmQU6g0ssxrpnsYEAtjAiOli+YVQGuumsZGaJ8zHA/DgJ2FTGovNUyfuSUFLhd9nLlSqFs2Avnx0Ck7Q1dxDO5truOm6e285YLHqLaGdetFyPQAj/Z4w4RJ5u5X6d7rhBjTfRAAw== - - - MIIDJzCCAg8CBEuonbIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMCRVMxDjAMBgNVBAgMBVNw - YWluMQ8wDQYDVQQHDAZNYWRyaWQxDjAMBgNVBAoMBUluZHJhMRgwFgYDVQQDDA9sb2NhbC1kZW1v - LWNlcnQwHhcNMTAwMzIzMTA1MzM4WhcNMTAwNjAxMTA1MzM4WjBYMQswCQYDVQQGEwJFUzEOMAwG - A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExGDAWBgNVBAMMD2xv - Y2FsLWRlbW8tY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfdQ1/mkM9sqqab - ri8qqqX4s0J6UEEXyF+0AjLU8RC4WMeYFSZ5tfwnyLsoXY0/9bZLXnBxSibQYaf4SnpZJhlVA4sU - 0d8qyEWA2OvXGDCm7uspGHG3CRQa7fpHsmHmfIAqho9XDlwpwJdx5gK4Edc6aArcMQfjqMhy1s1n - 6Of1i1lMGGsGrERIRY7biIQu/8nITbHH18sUAZMG1u/Q0Avi9O3LWyswHXUouZ818fWwG6xru2N5 - y6vtVO/SL3doRSdqYkEms93TgxTtaKg8XNe24zhNTte6nvWLaKesi2KzZGC57HU47HBFEs8NWk7z - 9BDf8uLyPz9VDahwVKzMto8CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAgpuReXQ7Dsfdoe5zzy2F - 6kn1qqtMkRGsBPKnDFCI/GkIZpBiqlfwdh6sipnFKWfKEDlPKN1kEhbkDR2GA1Cp4F4ZSL/HumZM - pWabRhDxhTPvHIFbbShPDJY93+jw/yQeaWgMuhw3WzdH9TrVoRZH0Q7sG1pIJo5/6IogIZwFvJHT - /NDutKmurU6Lw8Vnde8PfnQd+FTEhz0SEGyKkWjAuhGbJfseBy/z3L+MJq1rdSQ9PF7wXDvWNzJq - yaNBUWWBV1TskvkNZXcaguroVPy2XhA1aixlAajWEXLk6Uuj5UYqalrV/reNYvDvY0BV2CIn51r7 - Ppm8IFVTk8mYfX8/jw== - - - - - - urn:oasis:names:tc:SAML:2.0:status:Success - - - http://C-PEPS.gov.xx - - urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified - - - - - - - http://S-PEPS.gov.xx - - - - - - - - - - - - 16/12/2008 - - - - 105 - IS - 10 - Gudrunartun - Reykjavik - - - - - value3 - value4 - value1 - value2 - - - - 16 - 18 - - - 123456789IS - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml deleted file mode 100644 index c48bfde95..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - http://S-PEPS.gov.xx - - - - - - - - - - - - - yzsqaxBNicOrixBUno5cL0CBOpE= - - - - Xycll1PF7hh3Xdykpr6nIr8Q6PQ6OxLIBBBugoGpAm/V4Hu7tKakHJp8TgtRWZ30jG5eolOXnJkC - wiaTVUFaQz7cNn27syRJkdA+eYlz9doiwUJ5eD1cAyddZYsNPpSeAj5UK45oN0qCH+/pI9mRw8Oi - YIN/BUEtXkoYTjPtkmA= - - - - MIIBmDCCAQECBEuWisIwDQYJKoZIhvcNAQEFBQAwEzERMA8GA1UEAxMIY291bnRyeTEwHhcNMTAw - MzA5MTc1MjAyWhcNMTAwNjA3MTc1MjAyWjATMREwDwYDVQQDEwhjb3VudHJ5MTCBnzANBgkqhkiG - 9w0BAQEFAAOBjQAwgYkCgYEAnb2gcchwxvJBclcsfCBWJnYefLJYQnDGCQ3RUtYZc26JznnLXclu - h1XfLJlWgYk/pFKz7B9KfJztal47c6mBfisnxjhdcLqcbXOuRIm7E8TZPzdbHEd60WHPDv20jr+r - /WkOQs12tKQMbgDX2wtBBcJODLYCDiYa1oQsnyhdOGkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBk - 3luVRc0EqEE1zZeYvRPi5a2yOZfI9H+/rXI1qNLwmICnuJX++ukUbqJHm/FV1iSPM9O9oqzifJ/K - eKL5EcUugJ76Tu5XO8za2FoJvYr+jIZDsEkCg+OSzcp/eljiWAIh2enZcQ/ON6QxWXeSNJPH0xOq - KAoZgbUK0Zld3Dsheg== - - - - - 3 - EDU001 - OXF001 - APP001 - EN - true - true - true - - - 16 - 18 - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml deleted file mode 100644 index 8766f9a8b..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - http://S-PEPS.gov.xx - - - S6nY97RSCUJXq3HZ5obSLCI341LvtAA3vHjR1FWxrIMDPACQMqlNWBYNnRP1RiZiJV6x0RieH+SR - Vkiy03jYyhr0XkwAE5Wd6Huf+zIbeTXjZkdQj7JpAXoB+ky4G/+L0deamvsP3eO7ZJ4grady4gmC - Xt8p8tK3EoMocZse2hw= - - - - MIIBkTCB+wIESpT8bTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVzdG9yazAeFw0wOTA4MjYw - OTEyMTNaFw0wOTExMjQwOTEyMTNaMBAxDjAMBgNVBAMTBXN0b3JrMIGfMA0GCSqGSIb3DQEBAQUA - A4GNADCBiQKBgQDK/QL8NuMd41I1lObObeRA6DaM8bjeYqIz5mg5WnnZv4jlcK7Gq89Lk6htXRFl - lAXpDYhI3zolMIMHEMZ3zQQPc7lgTV6Bbz9uD2YTJ9Kx55e8Y6Y49DO+TiiejGJxTzTFUcuBJHaK - ipuvLVd1a8N3RAnaGSUOozhrTqxba82mEwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFJgeS18nhUl - r7WnvSn9FlkI94U//Hk3iZLc3/cScTu7D7Y/J0eUq4TF8PsSzWX5khGuqrTkswNgfEtl2IpACQ2w - kB8+RxeRNdddQlGHlO4ZqnpvxXBwSouiy2yUeAo0y++vMFm6DO4sxfk8eTtimPDo5SzBtjtGtbqS - 3cyl/wz8 - - - - - 3 - false - false - false - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml b/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml deleted file mode 100644 index 1b1e1646c..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - http://S-PEPS.gov.xx - - - S6nY97RSCUJXq3HZ5obSLCI341LvtAA3vHjR1FWxrIMDPACQMqlNWBYNnRP1RiZiJV6x0RieH+SR - Vkiy03jYyhr0XkwAE5Wd6Huf+zIbeTXjZkdQj7JpAXoB+ky4G/+L0deamvsP3eO7ZJ4grady4gmC - Xt8p8tK3EoMocZse2hw= - - - - MIIBkTCB+wIESpT8bTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVzdG9yazAeFw0wOTA4MjYw - OTEyMTNaFw0wOTExMjQwOTEyMTNaMBAxDjAMBgNVBAMTBXN0b3JrMIGfMA0GCSqGSIb3DQEBAQUA - A4GNADCBiQKBgQDK/QL8NuMd41I1lObObeRA6DaM8bjeYqIz5mg5WnnZv4jlcK7Gq89Lk6htXRFl - lAXpDYhI3zolMIMHEMZ3zQQPc7lgTV6Bbz9uD2YTJ9Kx55e8Y6Y49DO+TiiejGJxTzTFUcuBJHaK - ipuvLVd1a8N3RAnaGSUOozhrTqxba82mEwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFJgeS18nhUl - r7WnvSn9FlkI94U//Hk3iZLc3/cScTu7D7Y/J0eUq4TF8PsSzWX5khGuqrTkswNgfEtl2IpACQ2w - kB8+RxeRNdddQlGHlO4ZqnpvxXBwSouiy2yUeAo0y++vMFm6DO4sxfk8eTtimPDo5SzBtjtGtbqS - 3cyl/wz8 - - - - - 3 - false - false - false - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SSETestUtils.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SSETestUtils.class deleted file mode 100644 index 04ee36e06..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SSETestUtils.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SimpleBaseTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SimpleBaseTest.class deleted file mode 100644 index d2e26053d..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/SimpleBaseTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.class deleted file mode 100644 index ef33ccfac..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.class deleted file mode 100644 index d6a90501c..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAuthRequestTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAuthRequestTest.class deleted file mode 100644 index 9aae365f2..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkAuthRequestTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutRequestTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutRequestTest.class deleted file mode 100644 index 8edfc3c0a..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutRequestTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutResponseTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutResponseTest.class deleted file mode 100644 index 6381cbbd4..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkLogoutResponseTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkNewResponseTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkNewResponseTest.class deleted file mode 100644 index c7c95781f..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkNewResponseTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkResponseTest.class b/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkResponseTest.class deleted file mode 100644 index 36c9d64eb..000000000 Binary files a/id/server/SamlEngine-VIDP/target/test-classes/eu/stork/peps/test/simple/StorkResponseTest.class and /dev/null differ diff --git a/id/server/SamlEngine-VIDP/target/test-classes/logback-test.xml b/id/server/SamlEngine-VIDP/target/test-classes/logback-test.xml deleted file mode 100644 index 99d7d353a..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/logback-test.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/id/server/SamlEngine-VIDP/target/test-classes/p11Conf.cfg b/id/server/SamlEngine-VIDP/target/test-classes/p11Conf.cfg deleted file mode 100644 index bd9f357ce..000000000 --- a/id/server/SamlEngine-VIDP/target/test-classes/p11Conf.cfg +++ /dev/null @@ -1,24 +0,0 @@ -//ATTRIBUTE VALUE -//name name suffix of this provider instance -//library pathname of PKCS#11 implementation -//slotListIndex slot index - -//PREFIX DESCRIPTION -//CKO_ Object class -//CKA_ Attribute -//CKK_ Key type - -//attributes(operation, keytype, keyalgorithm) = { -// name1 = value1 -// [...] -//} - -name=nameProvider -library=library.dll -slotListIndex=0 -attributes(*,CKO_PUBLIC_KEY,CKK_RSA)={ - CKA_VERIFY=true -} -attributes(*,CKO_PRIVATE_KEY,CKK_RSA)={ - CKA_SIGN=true -} \ No newline at end of file diff --git a/id/server/stork2-commons/.svn/all-wcprops b/id/server/stork2-commons/.svn/all-wcprops new file mode 100644 index 000000000..013d868be --- /dev/null +++ b/id/server/stork2-commons/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 45 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons +END +pom.xml +K 25 +svn:wc:ra_dav:version-url +V 53 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/pom.xml +END +Releases +K 25 +svn:wc:ra_dav:version-url +V 54 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/Releases +END diff --git a/id/server/stork2-commons/.svn/dir-prop-base b/id/server/stork2-commons/.svn/dir-prop-base new file mode 100644 index 000000000..9dc541cfd --- /dev/null +++ b/id/server/stork2-commons/.svn/dir-prop-base @@ -0,0 +1,10 @@ +K 10 +svn:ignore +V 44 +.classpath +.project +.settings +report +target + +END diff --git a/id/server/stork2-commons/.svn/entries b/id/server/stork2-commons/.svn/entries new file mode 100644 index 000000000..6956e0c9c --- /dev/null +++ b/id/server/stork2-commons/.svn/entries @@ -0,0 +1,99 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja +has-props + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +Releases +file + + + + +2014-03-05T09:36:08.094515Z +5013e8d011c7d67a3faac86ae0ec7aae +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2653 + +src +dir + +pom.xml +file + + + + +2014-03-05T09:36:08.086515Z +c245a61144c036e0dc82e0adfed566aa +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +5777 + diff --git a/id/server/stork2-commons/.svn/text-base/Releases.svn-base b/id/server/stork2-commons/.svn/text-base/Releases.svn-base new file mode 100644 index 000000000..6550affd0 --- /dev/null +++ b/id/server/stork2-commons/.svn/text-base/Releases.svn-base @@ -0,0 +1,73 @@ +Created 06-04-2011 + +Branch : STORKCommons_0_5_UPDATE_06042011 +Date : 06-04-2011 +Changes: No changes. + +Branch : STORKCommons_0_5_UPDATE_07072011 +Date : 07-07-2011 +Changes: Inserted constants to HttpOnly HTTP Header. + +Branch : STORKCommons_0_6 +Date : 07-11-2011 +Changes: Improved error exception handling (few changes on the exception classes). + Improved Constansts (unused removed, others added). + Unit Tests include (almost all the code is cover). + Fix some minor bugs found on unit tests. + New Copyright License added. + PEPUtils refactored. + Improved error code message (three kind of messages: to citizen, admin and saml token). + +Branch : STORKCommons_0_6_1 +Date : 28-11-2011 +Changes: Removed unnecessary javadoc package file. + Updated pepsUtils.properties file (check attribute value had old error message) + +Branch : STORKCommons_0_9 +Date : 02-12-2011 +Changes: Updated Version to 0.9 + +Branch : STORKCommons_1_0 +Date : 02-12-2011 +Changes: Updated Version to 1.0 + +Branch : STORKCommons_1_1_0 +Date : 01-11-2013 +Changes: Updated Version to 1.1.0 + Dependencies updated + Business Logic Part I changes + SAML Engine Changes merged (from SamlEngine/1.1.0/Commons branch to be easier to merge this branch with trunk) + Fixed some errors on Test Case + +Branch : STORKCommons_1_1_1 +Date : 02-12-2013 +Changes: Updated Version to 1.1.1 + Added mandate error code + PMD quality code changes (some final identifier missing) + Added new methods to personal attribute list to get Mandatory/Optional and/or Simple/Complex attributes + Added new unit tests + +Branch : Commons_1_1_2 +Date : 13-12-2013 +Changes: Updated Version to 1.1.2 + Added request flow of PV (incomplete) + Added AP mandatory attribute to get data for business attributes + *) based on configuration file it adds the missing attributes (eIdentifier, givenName, surname and dateOfBirth) or change isRequired to true. + changes original isRequired state in response + Added new Interface (IAttributeListProcessor) to make some operations on attribute lists + +Branch : Commons_1_1_3 +Date : 21-12-2013 +Changes: Updated Version to 1.1.3 + Power Validation is complete now + Business Logic I and II integration (Request Complete!) + +Branch : Commons_1_1_4 +Date : 08-01-2014 +Changes: Updated Version to 1.1.4 + Added new method to Personal attribute List to check if there is at least one attribute with no value. + +Branch : Commons_1_4_0 +Date : 28-02-2014 +Changes: Updated Version to 1.4.0 + Removed AUB \ No newline at end of file diff --git a/id/server/stork2-commons/.svn/text-base/pom.xml.svn-base b/id/server/stork2-commons/.svn/text-base/pom.xml.svn-base new file mode 100644 index 000000000..04b35f5f5 --- /dev/null +++ b/id/server/stork2-commons/.svn/text-base/pom.xml.svn-base @@ -0,0 +1,213 @@ + + 4.0.0 + eu.stork + Commons + jar + Stork Commons + + UTF-8 + 1.4.0 + 2.6.0 + + ${stork.version} + + The STORKCommons library provides beans, Java Interfaces and utility classes to integrate PEPS and SAML Engine. + + + + + + + joda-time + joda-time + 2.3 + + + + + log4j + log4j + 1.2.17 + + + javax.jms + jms + + + com.sun.jdmk + jmxtools + + + com.sun.jmx + jmxri + + + mail + javax.mail + + + + + + org.opensaml + opensaml + ${opensaml.version} + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-simple + + + org.slf4j + jcl-over-slf4j + + + org.slf4j + log4j-over-slf4j + + + org.slf4j + jul-to-slf4j + + + + + + + org.bouncycastle + bcprov-jdk16 + 1.46 + + + + + + javax.servlet + servlet-api + 2.5 + provided + + + + commons-lang + commons-lang + 2.6 + jar + compile + + + junit + junit + 4.11 + test + + + + + commons + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-surefire-plugin + + reversealphabetical + false + + reversealphabetical + **/PEPSUtilTest.java + **/PersonalAttributeTestCase.java + **/PersonalAttributeListTestCase.java + **/DateUtilTestCase.java + **/AttributeUtilTest.java + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + http://commons.apache.org/lang/api/ + http://java.sun.com/j2se/1.6.0/docs/api/ + http://www.bouncycastle.org/docs/docs1.6/ + http://docs.oracle.com/javase/6/docs/api/ + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + verify + + jar-no-fork + + + + + + + + src/test/resources + + log4j.xml + + + + + + + embedded + + + + ${project.basedir}/src/main/resources + + + ${project.basedir}/src/main/config/embedded + + + + + + metrics + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.5.1 + + + html + xml + + + + + + + + diff --git a/id/server/stork2-commons/Releases b/id/server/stork2-commons/Releases new file mode 100644 index 000000000..6550affd0 --- /dev/null +++ b/id/server/stork2-commons/Releases @@ -0,0 +1,73 @@ +Created 06-04-2011 + +Branch : STORKCommons_0_5_UPDATE_06042011 +Date : 06-04-2011 +Changes: No changes. + +Branch : STORKCommons_0_5_UPDATE_07072011 +Date : 07-07-2011 +Changes: Inserted constants to HttpOnly HTTP Header. + +Branch : STORKCommons_0_6 +Date : 07-11-2011 +Changes: Improved error exception handling (few changes on the exception classes). + Improved Constansts (unused removed, others added). + Unit Tests include (almost all the code is cover). + Fix some minor bugs found on unit tests. + New Copyright License added. + PEPUtils refactored. + Improved error code message (three kind of messages: to citizen, admin and saml token). + +Branch : STORKCommons_0_6_1 +Date : 28-11-2011 +Changes: Removed unnecessary javadoc package file. + Updated pepsUtils.properties file (check attribute value had old error message) + +Branch : STORKCommons_0_9 +Date : 02-12-2011 +Changes: Updated Version to 0.9 + +Branch : STORKCommons_1_0 +Date : 02-12-2011 +Changes: Updated Version to 1.0 + +Branch : STORKCommons_1_1_0 +Date : 01-11-2013 +Changes: Updated Version to 1.1.0 + Dependencies updated + Business Logic Part I changes + SAML Engine Changes merged (from SamlEngine/1.1.0/Commons branch to be easier to merge this branch with trunk) + Fixed some errors on Test Case + +Branch : STORKCommons_1_1_1 +Date : 02-12-2013 +Changes: Updated Version to 1.1.1 + Added mandate error code + PMD quality code changes (some final identifier missing) + Added new methods to personal attribute list to get Mandatory/Optional and/or Simple/Complex attributes + Added new unit tests + +Branch : Commons_1_1_2 +Date : 13-12-2013 +Changes: Updated Version to 1.1.2 + Added request flow of PV (incomplete) + Added AP mandatory attribute to get data for business attributes + *) based on configuration file it adds the missing attributes (eIdentifier, givenName, surname and dateOfBirth) or change isRequired to true. + changes original isRequired state in response + Added new Interface (IAttributeListProcessor) to make some operations on attribute lists + +Branch : Commons_1_1_3 +Date : 21-12-2013 +Changes: Updated Version to 1.1.3 + Power Validation is complete now + Business Logic I and II integration (Request Complete!) + +Branch : Commons_1_1_4 +Date : 08-01-2014 +Changes: Updated Version to 1.1.4 + Added new method to Personal attribute List to check if there is at least one attribute with no value. + +Branch : Commons_1_4_0 +Date : 28-02-2014 +Changes: Updated Version to 1.4.0 + Removed AUB \ No newline at end of file diff --git a/id/server/stork2-commons/pom.xml b/id/server/stork2-commons/pom.xml new file mode 100644 index 000000000..04b35f5f5 --- /dev/null +++ b/id/server/stork2-commons/pom.xml @@ -0,0 +1,213 @@ + + 4.0.0 + eu.stork + Commons + jar + Stork Commons + + UTF-8 + 1.4.0 + 2.6.0 + + ${stork.version} + + The STORKCommons library provides beans, Java Interfaces and utility classes to integrate PEPS and SAML Engine. + + + + + + + joda-time + joda-time + 2.3 + + + + + log4j + log4j + 1.2.17 + + + javax.jms + jms + + + com.sun.jdmk + jmxtools + + + com.sun.jmx + jmxri + + + mail + javax.mail + + + + + + org.opensaml + opensaml + ${opensaml.version} + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-simple + + + org.slf4j + jcl-over-slf4j + + + org.slf4j + log4j-over-slf4j + + + org.slf4j + jul-to-slf4j + + + + + + + org.bouncycastle + bcprov-jdk16 + 1.46 + + + + + + javax.servlet + servlet-api + 2.5 + provided + + + + commons-lang + commons-lang + 2.6 + jar + compile + + + junit + junit + 4.11 + test + + + + + commons + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + org.apache.maven.plugins + maven-surefire-plugin + + reversealphabetical + false + + reversealphabetical + **/PEPSUtilTest.java + **/PersonalAttributeTestCase.java + **/PersonalAttributeListTestCase.java + **/DateUtilTestCase.java + **/AttributeUtilTest.java + + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + http://commons.apache.org/lang/api/ + http://java.sun.com/j2se/1.6.0/docs/api/ + http://www.bouncycastle.org/docs/docs1.6/ + http://docs.oracle.com/javase/6/docs/api/ + + + + + org.apache.maven.plugins + maven-source-plugin + 2.2.1 + + + attach-sources + verify + + jar-no-fork + + + + + + + + src/test/resources + + log4j.xml + + + + + + + embedded + + + + ${project.basedir}/src/main/resources + + + ${project.basedir}/src/main/config/embedded + + + + + + metrics + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.5.1 + + + html + xml + + + + + + + + diff --git a/id/server/stork2-commons/src/.svn/all-wcprops b/id/server/stork2-commons/src/.svn/all-wcprops new file mode 100644 index 000000000..b2a57db4c --- /dev/null +++ b/id/server/stork2-commons/src/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 49 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src +END diff --git a/id/server/stork2-commons/src/.svn/entries b/id/server/stork2-commons/src/.svn/entries new file mode 100644 index 000000000..35f74102a --- /dev/null +++ b/id/server/stork2-commons/src/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +test +dir + +main +dir + diff --git a/id/server/stork2-commons/src/main/.svn/all-wcprops b/id/server/stork2-commons/src/main/.svn/all-wcprops new file mode 100644 index 000000000..ca1ee03bd --- /dev/null +++ b/id/server/stork2-commons/src/main/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main +END diff --git a/id/server/stork2-commons/src/main/.svn/entries b/id/server/stork2-commons/src/main/.svn/entries new file mode 100644 index 000000000..76ff91c7b --- /dev/null +++ b/id/server/stork2-commons/src/main/.svn/entries @@ -0,0 +1,37 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +resources +dir + +java +dir + +config +dir + diff --git a/id/server/stork2-commons/src/main/config/.svn/all-wcprops b/id/server/stork2-commons/src/main/config/.svn/all-wcprops new file mode 100644 index 000000000..e39a1da21 --- /dev/null +++ b/id/server/stork2-commons/src/main/config/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 61 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/config +END diff --git a/id/server/stork2-commons/src/main/config/.svn/entries b/id/server/stork2-commons/src/main/config/.svn/entries new file mode 100644 index 000000000..9a3950062 --- /dev/null +++ b/id/server/stork2-commons/src/main/config/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/config +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +embedded +dir + diff --git a/id/server/stork2-commons/src/main/config/embedded/.svn/all-wcprops b/id/server/stork2-commons/src/main/config/embedded/.svn/all-wcprops new file mode 100644 index 000000000..61c832a4b --- /dev/null +++ b/id/server/stork2-commons/src/main/config/embedded/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 70 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/config/embedded +END +pepsUtil.properties +K 25 +svn:wc:ra_dav:version-url +V 90 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/config/embedded/pepsUtil.properties +END diff --git a/id/server/stork2-commons/src/main/config/embedded/.svn/entries b/id/server/stork2-commons/src/main/config/embedded/.svn/entries new file mode 100644 index 000000000..3dcc1bccf --- /dev/null +++ b/id/server/stork2-commons/src/main/config/embedded/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/config/embedded +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +pepsUtil.properties +file + + + + +2014-03-05T09:36:08.010515Z +2d984e7eb1a7f6c6ba7048f46b85920b +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +7885 + diff --git a/id/server/stork2-commons/src/main/config/embedded/.svn/text-base/pepsUtil.properties.svn-base b/id/server/stork2-commons/src/main/config/embedded/.svn/text-base/pepsUtil.properties.svn-base new file mode 100644 index 000000000..ae811dda7 --- /dev/null +++ b/id/server/stork2-commons/src/main/config/embedded/.svn/text-base/pepsUtil.properties.svn-base @@ -0,0 +1,269 @@ +#Max allowed params size +validation.active=true +max.spUrl.size=150 +max.attrList.size=20000 +max.invalidAttributeList.size=20000 +max.attrName.size=100 +max.callback.size=300 +max.idp.url.size=300 +max.atp.url.size=300 +max.cpepsURL.size=300 +max.attrValue.size=20000 +max.attrType.size=25 +max.spId.size=40 +max.providerName.size=128 +max.spName.size=25 +max.country.size=150 +max.qaaLevel.size=1 +max.spQaaLevel.size=1 +max.errorCode.size=5 +max.errorMessage.size=300 +max.username.size=30 +max.spepsRedirectUrl.size=300 +max.speps.redirectUrl.size=300 +max.cpeps.redirectUrl.size=300 +max.cpepsRedirectUrl.size=300 +max.spepsAssertionUrl.size=300 +max.SAMLRequest.size=131072 +max.SAMLResponse.size=131072 +max.RelayState.size=80 +max.remoteAddr.size=300 +max.remoteHost.size=300 +max.localAddr.size=300 +max.localName.size=300 +max.apepsUrl.size=300 +max.apeps.callbackUrl.size=300 + +dtl.url=http://localhost:8080/DocumentService/DocumentService + +#ERROR codes/messages (accordingly to specification) + +#CountrySelector Interface errors +spCountrySelector.invalidSPQAA.code=0000001 +spCountrySelector.invalidSPQAA.message=invalid.spQAA.parameter + +spCountrySelector.invalidQaaSPid.code=0000001 +spCountrySelector.invalidQaaSPid.message=invalid.spQAAId.parameter + +spCountrySelector.invalidSpId.code=000002 +spCountrySelector.invalidSpId.message=invalid.spId.parameter + +spCountrySelector.invalidSpURL.code=000003 +spCountrySelector.invalidSpURL.message=invalid.spUrl.parameter + +domain.CountrySelectorAction.code=000003 +domain.CountrySelectorAction.message=invalid.cs.domain + +requests.CountrySelectorAction.code=000004 +requests.CountrySelectorAction.message=reached.max.requests.cs + +spCountrySelector.spNotAllowed.code=000006 +spCountrySelector.spNotAllowed.message=attr.access.deny + +spCountrySelector.invalidAttr.code=000007 +spCountrySelector.invalidAttr.message=invalid.spAttr.parameter + +spCountrySelector.invalidProviderName.code=000008 +spCountrySelector.invalidProviderName.message=invalid.spProvidername.parameter + +spCountrySelector.errorCreatingSAML.code=203001 +spCountrySelector.errorCreatingSAML.message=error.create.sp.saml + +spepsSAMLRequest.code=203001 +spepsSAMLRequest.message=error.create.saml.speps + +#ServiceProvider Interface errors +sProviderAction.invalidSPQAA.code=200001 +sProviderAction.invalidSPQAA.message=invalid.sp.qaa + +sProviderAction.invalidSPQAAId.code=200001 +sProviderAction.invalidSPQAAId.message=invalid.sp.qaaid + +sProviderAction.invalidSPId.code=200002 +sProviderAction.invalidSPId.message=invalid.sp.id + +domain.ServiceProviderAction.code=200003 +domain.ServiceProviderAction.message=invalid.sp.domain + +sProviderAction.invalidSPDomain.code=200003 +sProviderAction.invalidSPDomain.message=invalid.sp.domain + +sProviderAction.invalidCountry.code=200004 +sProviderAction.invalidCountry.message=invalid.sp.country + +sProviderAction.spNotAllowed.code=200005 +sProviderAction.spNotAllowed.message=sp.not.allowed + +sProviderAction.invalidSaml.code=200006 +sProviderAction.invalidSaml.message=invalid.sp.samlrequest + +sProviderAction.invalidSPProviderName.code=200007 +sProviderAction.invalidSPProviderName.message=sp.not.identified + +sProviderAction.invalidSPRedirect.code=200008 +sProviderAction.invalidSPRedirect.message=invalid.sp.redirectUrl + +sProviderAction.invalidRelayState.code=200009 +sProviderAction.invalidRelayState.message=invalid.sp.relaystate + +sProviderAction.invalidAttr.code=200011 +sProviderAction.invalidAttr.message=invalid.sp.attr + +requests.ServiceProviderAction.code=200012 +requests.ServiceProviderAction.message=reached.max.requests.sp + +sPPowerValidationAction.invalidSPPVAttrList.code=200013 +sPPowerValidationAction.invalidSPPVAttrList.message=invalid.sp.pv.attrlist + +invalid.sp.pv.attrlist.code=200013 +invalid.sp.pv.attrlist.message=invalid.sp.pv.attrlist + +sProviderAction.invalidSPAlias.code=203003 +sProviderAction.invalidSPAlias.message=invalid.sp.alias + +sProviderAction.errorCreatingSAML.code=203001 +sProviderAction.errorCreatingSAML.message=error.create.saml.speps + +#Internal Error +internalError.code=203001 +internalError.message=internalError + +attrList.code=202005 +attrList.message=invalid.attrList.parameter + +missing.sessionId.code=203010 +missing.sessionId.message=missing.session.id + +sessionError.code=203011 +sessionError.message=invalid.session.id + +invalid.sessionId.code=203011 +invalid.sessionId.message=invalid.session.id + +missing.mandate.code=203013 +missing.mandate.message=missing.mandate + +invalid.session.code=203012 +invalid.session.message=invalid.session + +callback.code=203006 +callback.message=invalid.callback.url + +idp.url.code=203006 +idp.url.message=invalid.idp.url + +IdPSAMLResponse.code=002001 +IdPSAMLResponse.message=invalid.idp.response + +authenticationFailed.code=003002 +authenticationFailed.message=authentication.failed + +username.code=003002 +username.message=authentication.failed + +invalidAttributeList.code=203001 +invalidAttributeList.message=invalid.attrlist + +invalidAttributeValue.code=203001 +invalidAttributeValue.message=invalid.attr.value + +attVerification.mandatory.code=202010 +attVerification.mandatory.message=missing.mandatory.attr + +attrValue.verification.code=203008 +attrValue.verification.message=invalid.stork.attrValue + +cpepsSAMLResponse.code=202012 +cpepsSAMLResponse.message=error.gen.cpeps.saml + +AtPSAMLResponse.code=202009 +AtPSAMLResponse.message=error.gen.atp.saml + +atp.url.code=203006 +atp.url.message=invalid.atp.url + +hash.error.code=203001 +hash.error.message=error.hash + +qaaLevel.code=203006 +qaaLevel.message=invalid.cpeps.qaalevel + +SAMLRequest.code=203001 +SAMLRequest.message=invalid.SAMLRequest + +atp.response.error.code=202011 +atp.response.error.message=atp.response.error + +#Colleague Request Interface errors + +colleagueRequest.invalidSAML.code=201002 +colleagueRequest.invalidSAML.message=invalid.speps.samlrequest + +colleagueRequest.invalidCountryCode.code=002001 +colleagueRequest.invalidCountryCode.message=country.cpeps.nomatch + +colleagueRequest.errorCreatingSAML.code=203001 +colleagueRequest.errorCreatingSAML.message=error.create.saml.cpeps + +colleagueRequest.invalidQaa.code=202004 +colleagueRequest.invalidQaa.message=invalid.requested.cpeps.qaalevel + +colleagueRequest.attrNull.code=202005 +colleagueRequest.attrNull.message=invalid.requested.attrlist.cpeps + +colleaguePVRequest.invalidPVAttrList.code=202013 +colleaguePVRequest.invalidPVAttrList.message=invalid.speps.pv.attrlist + +colleagueRequest.invalidRedirect.code=202001 +colleagueRequest.invalidRedirect.message=invalid.redirecturl.cpeps + +colleagueRequest.invalidDestUrl.code=203006 +colleagueRequest.invalidDestUrl.message=invalid.cpeps.destUrl + +cpepsRedirectUrl.code=203006 +cpepsRedirectUrl.message=invalid.cpeps.redirectUrl + +#Citizen Consent Interfaces errors + +citizenResponse.mandatory.code=202007 +citizenResponse.mandatory.message=no.consent.mand.attr + +cPeps.attrNull.code=202005 +cPeps.attrNull.message=invalid.attrList.cpeps + +citizenNoConsent.mandatory.code=202012 +citizenNoConsent.mandatory.message=no.consent.val.mand.attr + +#Colleague Response Interface errors + +colleagueResponse.invalidSAML.code=202002 +colleagueResponse.invalidSAML.message=invalid.cpeps.samlresp + +auRequestIdError.code=201005 +auRequestIdError.message=invalid.speps.saml.id + +audienceRestrictionError.code=201004 +audienceRestrictionError.message=speps.saml.condition.notmet + +spepsSAMLResponse.code=200010 +spepsSAMLResponse.message=error.gen.speps.saml + + +invalid.apepsRedirectUrl.code=001001 +invalid.apepsRedirectUrl.message=invalid.apeps.redirectUrl + +apepsSAMLRequest.code=001002 +apepsSAMLRequest.message=invalid.apeps.saml.request + +apepsSAMLResponse.code=001003 +apepsSAMLResponse.message=invalid.apeps.saml.response + +invalid.apepsCallbackUrl.code=001004 +invalid.apepsCallbackUrl.message=invalid.apeps.callback.url + +colleagueAttributeRequest.invalidSAML.code=001005 +colleagueAttributeRequest.invalidSAML.message=invalid.attr.request.saml + + +#Hash Digests +hashDigest.className=org.bouncycastle.crypto.digests.SHA512Digest diff --git a/id/server/stork2-commons/src/main/config/embedded/pepsUtil.properties b/id/server/stork2-commons/src/main/config/embedded/pepsUtil.properties new file mode 100644 index 000000000..ae811dda7 --- /dev/null +++ b/id/server/stork2-commons/src/main/config/embedded/pepsUtil.properties @@ -0,0 +1,269 @@ +#Max allowed params size +validation.active=true +max.spUrl.size=150 +max.attrList.size=20000 +max.invalidAttributeList.size=20000 +max.attrName.size=100 +max.callback.size=300 +max.idp.url.size=300 +max.atp.url.size=300 +max.cpepsURL.size=300 +max.attrValue.size=20000 +max.attrType.size=25 +max.spId.size=40 +max.providerName.size=128 +max.spName.size=25 +max.country.size=150 +max.qaaLevel.size=1 +max.spQaaLevel.size=1 +max.errorCode.size=5 +max.errorMessage.size=300 +max.username.size=30 +max.spepsRedirectUrl.size=300 +max.speps.redirectUrl.size=300 +max.cpeps.redirectUrl.size=300 +max.cpepsRedirectUrl.size=300 +max.spepsAssertionUrl.size=300 +max.SAMLRequest.size=131072 +max.SAMLResponse.size=131072 +max.RelayState.size=80 +max.remoteAddr.size=300 +max.remoteHost.size=300 +max.localAddr.size=300 +max.localName.size=300 +max.apepsUrl.size=300 +max.apeps.callbackUrl.size=300 + +dtl.url=http://localhost:8080/DocumentService/DocumentService + +#ERROR codes/messages (accordingly to specification) + +#CountrySelector Interface errors +spCountrySelector.invalidSPQAA.code=0000001 +spCountrySelector.invalidSPQAA.message=invalid.spQAA.parameter + +spCountrySelector.invalidQaaSPid.code=0000001 +spCountrySelector.invalidQaaSPid.message=invalid.spQAAId.parameter + +spCountrySelector.invalidSpId.code=000002 +spCountrySelector.invalidSpId.message=invalid.spId.parameter + +spCountrySelector.invalidSpURL.code=000003 +spCountrySelector.invalidSpURL.message=invalid.spUrl.parameter + +domain.CountrySelectorAction.code=000003 +domain.CountrySelectorAction.message=invalid.cs.domain + +requests.CountrySelectorAction.code=000004 +requests.CountrySelectorAction.message=reached.max.requests.cs + +spCountrySelector.spNotAllowed.code=000006 +spCountrySelector.spNotAllowed.message=attr.access.deny + +spCountrySelector.invalidAttr.code=000007 +spCountrySelector.invalidAttr.message=invalid.spAttr.parameter + +spCountrySelector.invalidProviderName.code=000008 +spCountrySelector.invalidProviderName.message=invalid.spProvidername.parameter + +spCountrySelector.errorCreatingSAML.code=203001 +spCountrySelector.errorCreatingSAML.message=error.create.sp.saml + +spepsSAMLRequest.code=203001 +spepsSAMLRequest.message=error.create.saml.speps + +#ServiceProvider Interface errors +sProviderAction.invalidSPQAA.code=200001 +sProviderAction.invalidSPQAA.message=invalid.sp.qaa + +sProviderAction.invalidSPQAAId.code=200001 +sProviderAction.invalidSPQAAId.message=invalid.sp.qaaid + +sProviderAction.invalidSPId.code=200002 +sProviderAction.invalidSPId.message=invalid.sp.id + +domain.ServiceProviderAction.code=200003 +domain.ServiceProviderAction.message=invalid.sp.domain + +sProviderAction.invalidSPDomain.code=200003 +sProviderAction.invalidSPDomain.message=invalid.sp.domain + +sProviderAction.invalidCountry.code=200004 +sProviderAction.invalidCountry.message=invalid.sp.country + +sProviderAction.spNotAllowed.code=200005 +sProviderAction.spNotAllowed.message=sp.not.allowed + +sProviderAction.invalidSaml.code=200006 +sProviderAction.invalidSaml.message=invalid.sp.samlrequest + +sProviderAction.invalidSPProviderName.code=200007 +sProviderAction.invalidSPProviderName.message=sp.not.identified + +sProviderAction.invalidSPRedirect.code=200008 +sProviderAction.invalidSPRedirect.message=invalid.sp.redirectUrl + +sProviderAction.invalidRelayState.code=200009 +sProviderAction.invalidRelayState.message=invalid.sp.relaystate + +sProviderAction.invalidAttr.code=200011 +sProviderAction.invalidAttr.message=invalid.sp.attr + +requests.ServiceProviderAction.code=200012 +requests.ServiceProviderAction.message=reached.max.requests.sp + +sPPowerValidationAction.invalidSPPVAttrList.code=200013 +sPPowerValidationAction.invalidSPPVAttrList.message=invalid.sp.pv.attrlist + +invalid.sp.pv.attrlist.code=200013 +invalid.sp.pv.attrlist.message=invalid.sp.pv.attrlist + +sProviderAction.invalidSPAlias.code=203003 +sProviderAction.invalidSPAlias.message=invalid.sp.alias + +sProviderAction.errorCreatingSAML.code=203001 +sProviderAction.errorCreatingSAML.message=error.create.saml.speps + +#Internal Error +internalError.code=203001 +internalError.message=internalError + +attrList.code=202005 +attrList.message=invalid.attrList.parameter + +missing.sessionId.code=203010 +missing.sessionId.message=missing.session.id + +sessionError.code=203011 +sessionError.message=invalid.session.id + +invalid.sessionId.code=203011 +invalid.sessionId.message=invalid.session.id + +missing.mandate.code=203013 +missing.mandate.message=missing.mandate + +invalid.session.code=203012 +invalid.session.message=invalid.session + +callback.code=203006 +callback.message=invalid.callback.url + +idp.url.code=203006 +idp.url.message=invalid.idp.url + +IdPSAMLResponse.code=002001 +IdPSAMLResponse.message=invalid.idp.response + +authenticationFailed.code=003002 +authenticationFailed.message=authentication.failed + +username.code=003002 +username.message=authentication.failed + +invalidAttributeList.code=203001 +invalidAttributeList.message=invalid.attrlist + +invalidAttributeValue.code=203001 +invalidAttributeValue.message=invalid.attr.value + +attVerification.mandatory.code=202010 +attVerification.mandatory.message=missing.mandatory.attr + +attrValue.verification.code=203008 +attrValue.verification.message=invalid.stork.attrValue + +cpepsSAMLResponse.code=202012 +cpepsSAMLResponse.message=error.gen.cpeps.saml + +AtPSAMLResponse.code=202009 +AtPSAMLResponse.message=error.gen.atp.saml + +atp.url.code=203006 +atp.url.message=invalid.atp.url + +hash.error.code=203001 +hash.error.message=error.hash + +qaaLevel.code=203006 +qaaLevel.message=invalid.cpeps.qaalevel + +SAMLRequest.code=203001 +SAMLRequest.message=invalid.SAMLRequest + +atp.response.error.code=202011 +atp.response.error.message=atp.response.error + +#Colleague Request Interface errors + +colleagueRequest.invalidSAML.code=201002 +colleagueRequest.invalidSAML.message=invalid.speps.samlrequest + +colleagueRequest.invalidCountryCode.code=002001 +colleagueRequest.invalidCountryCode.message=country.cpeps.nomatch + +colleagueRequest.errorCreatingSAML.code=203001 +colleagueRequest.errorCreatingSAML.message=error.create.saml.cpeps + +colleagueRequest.invalidQaa.code=202004 +colleagueRequest.invalidQaa.message=invalid.requested.cpeps.qaalevel + +colleagueRequest.attrNull.code=202005 +colleagueRequest.attrNull.message=invalid.requested.attrlist.cpeps + +colleaguePVRequest.invalidPVAttrList.code=202013 +colleaguePVRequest.invalidPVAttrList.message=invalid.speps.pv.attrlist + +colleagueRequest.invalidRedirect.code=202001 +colleagueRequest.invalidRedirect.message=invalid.redirecturl.cpeps + +colleagueRequest.invalidDestUrl.code=203006 +colleagueRequest.invalidDestUrl.message=invalid.cpeps.destUrl + +cpepsRedirectUrl.code=203006 +cpepsRedirectUrl.message=invalid.cpeps.redirectUrl + +#Citizen Consent Interfaces errors + +citizenResponse.mandatory.code=202007 +citizenResponse.mandatory.message=no.consent.mand.attr + +cPeps.attrNull.code=202005 +cPeps.attrNull.message=invalid.attrList.cpeps + +citizenNoConsent.mandatory.code=202012 +citizenNoConsent.mandatory.message=no.consent.val.mand.attr + +#Colleague Response Interface errors + +colleagueResponse.invalidSAML.code=202002 +colleagueResponse.invalidSAML.message=invalid.cpeps.samlresp + +auRequestIdError.code=201005 +auRequestIdError.message=invalid.speps.saml.id + +audienceRestrictionError.code=201004 +audienceRestrictionError.message=speps.saml.condition.notmet + +spepsSAMLResponse.code=200010 +spepsSAMLResponse.message=error.gen.speps.saml + + +invalid.apepsRedirectUrl.code=001001 +invalid.apepsRedirectUrl.message=invalid.apeps.redirectUrl + +apepsSAMLRequest.code=001002 +apepsSAMLRequest.message=invalid.apeps.saml.request + +apepsSAMLResponse.code=001003 +apepsSAMLResponse.message=invalid.apeps.saml.response + +invalid.apepsCallbackUrl.code=001004 +invalid.apepsCallbackUrl.message=invalid.apeps.callback.url + +colleagueAttributeRequest.invalidSAML.code=001005 +colleagueAttributeRequest.invalidSAML.message=invalid.attr.request.saml + + +#Hash Digests +hashDigest.className=org.bouncycastle.crypto.digests.SHA512Digest diff --git a/id/server/stork2-commons/src/main/java/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/.svn/all-wcprops new file mode 100644 index 000000000..ca59ad1e3 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 59 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java +END diff --git a/id/server/stork2-commons/src/main/java/.svn/entries b/id/server/stork2-commons/src/main/java/.svn/entries new file mode 100644 index 000000000..ff9dfce64 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +eu +dir + diff --git a/id/server/stork2-commons/src/main/java/eu/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/.svn/all-wcprops new file mode 100644 index 000000000..30e4698c0 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu +END diff --git a/id/server/stork2-commons/src/main/java/eu/.svn/entries b/id/server/stork2-commons/src/main/java/eu/.svn/entries new file mode 100644 index 000000000..4c0ceff03 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +stork +dir + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/.svn/all-wcprops new file mode 100644 index 000000000..8e248afa5 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/.svn/entries new file mode 100644 index 000000000..ff2fa64d7 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +peps +dir + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/all-wcprops new file mode 100644 index 000000000..da872cf08 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 73 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/entries new file mode 100644 index 000000000..f0c47a6d2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +auth +dir + +complex +dir + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/all-wcprops new file mode 100644 index 000000000..78e9d344c --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 78 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/java/eu/stork/peps/auth +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/entries new file mode 100644 index 000000000..253bfd218 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps/auth +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +specific +dir + +commons +dir + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/all-wcprops new file mode 100644 index 000000000..edb1120b5 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/all-wcprops @@ -0,0 +1,191 @@ +K 25 +svn:wc:ra_dav:version-url +V 86 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/java/eu/stork/peps/auth/commons +END +AttributeSource.java +K 25 +svn:wc:ra_dav:version-url +V 107 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/AttributeSource.java +END +package-info.java +K 25 +svn:wc:ra_dav:version-url +V 103 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/package-info.java +END +PEPSValues.java +K 25 +svn:wc:ra_dav:version-url +V 102 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/PEPSValues.java +END +STORKAttrQueryRequest.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryRequest.java +END +CitizenConsent.java +K 25 +svn:wc:ra_dav:version-url +V 106 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/CitizenConsent.java +END +AttributeProvidersMap.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvidersMap.java +END +STORKAttrQueryResponse.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryResponse.java +END +PersonalAttributeList.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java +END +AttributeName.java +K 25 +svn:wc:ra_dav:version-url +V 105 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/AttributeName.java +END +PEPSUtil.java +K 25 +svn:wc:ra_dav:version-url +V 100 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/PEPSUtil.java +END +PersonalAttribute.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttribute.java +END +IAttributeListProcessor.java +K 25 +svn:wc:ra_dav:version-url +V 115 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/IAttributeListProcessor.java +END +STORKAuthnRequest.java +K 25 +svn:wc:ra_dav:version-url +V 108 +/CITnet/svn/STORK2/!svn/ver/56/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnRequest.java +END +STORKLogoutResponse.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutResponse.java +END +IStorkLogger.java +K 25 +svn:wc:ra_dav:version-url +V 103 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/IStorkLogger.java +END +DateUtil.java +K 25 +svn:wc:ra_dav:version-url +V 99 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/DateUtil.java +END +AttributeProvider.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvider.java +END +IStorkSession.java +K 25 +svn:wc:ra_dav:version-url +V 104 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/IStorkSession.java +END +Linker.java +K 25 +svn:wc:ra_dav:version-url +V 98 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/Linker.java +END +PEPSParameters.java +K 25 +svn:wc:ra_dav:version-url +V 106 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/PEPSParameters.java +END +AttributeConstants.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/AttributeConstants.java +END +STORKStatusCode.java +K 25 +svn:wc:ra_dav:version-url +V 106 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKStatusCode.java +END +AttributeUtil.java +K 25 +svn:wc:ra_dav:version-url +V 105 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/AttributeUtil.java +END +Country.java +K 25 +svn:wc:ra_dav:version-url +V 98 +/CITnet/svn/STORK2/!svn/ver/96/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/Country.java +END +PEPSErrors.java +K 25 +svn:wc:ra_dav:version-url +V 102 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/PEPSErrors.java +END +STORKLogoutRequest.java +K 25 +svn:wc:ra_dav:version-url +V 110 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutRequest.java +END +IAttributeProvidersMap.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/CITnet/svn/STORK2/!svn/ver/31/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/IAttributeProvidersMap.java +END +STORKSubStatusCode.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKSubStatusCode.java +END +IPersonalAttributeList.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/IPersonalAttributeList.java +END +CountryCodes.java +K 25 +svn:wc:ra_dav:version-url +V 103 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/CountryCodes.java +END +STORKAuthnResponse.java +K 25 +svn:wc:ra_dav:version-url +V 110 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnResponse.java +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/entries new file mode 100644 index 000000000..0b8070876 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/entries @@ -0,0 +1,1085 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps/auth/commons +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +AttributeConstants.java +file + + + + +2013-12-20T12:27:56.638475Z +940dcb9e93ede62e221f4b25abd6576b +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1831 + +STORKStatusCode.java +file + + + + +2013-12-20T12:27:56.638475Z +771689c75a8263c7e3966e820d59025e +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1906 + +AttributeUtil.java +file + + + + +2014-01-21T08:38:55.336702Z +2859d3335dfe719ca04258fae54e69a3 +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +7927 + +exceptions +dir + +Country.java +file + + + + +2013-12-20T12:27:56.638475Z +9cbde5f25b646d02dae7ccf424906b4a +2013-11-01T20:35:30.927048Z +96 +emferreri + + + + + + + + + + + + + + + + + + + + + +2208 + +PEPSErrors.java +file + + + + +2014-01-21T08:38:55.336702Z +bfe69afce772675187fdd637453ed12f +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +12165 + +STORKLogoutRequest.java +file + + + + +2014-01-21T08:38:55.336702Z +af445a2013f21ffecd3db7773ae3236e +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +4343 + +IAttributeProvidersMap.java +file + + + + +2013-12-20T12:27:56.634475Z +225257e8d6d7b9e6bcc4bea2463c33be +2013-10-10T17:38:31.956327Z +31 +emlelisst + + + + + + + + + + + + + + + + + + + + + +2534 + +STORKSubStatusCode.java +file + + + + +2013-12-20T12:27:56.634475Z +65e615e0119d4125d5f4f58af8bcd18b +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +2181 + +IPersonalAttributeList.java +file + + + + +2014-01-21T08:38:55.336702Z +b441a2c6c3eddcf1043c55e55f48faa6 +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +6598 + +STORKAuthnResponse.java +file + + + + +2014-01-21T08:38:55.336702Z +f2247f9a89e8ad01f9a24ad716f993ca +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +8724 + +CountryCodes.java +file + + + + +2013-12-20T12:27:56.638475Z +f91b0f8df0b2a68fe1b900d425257c23 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +3527 + +package-info.java +file + + + + +2013-12-20T12:27:56.638475Z +8d8068e217f10425f76a8d37192ccd80 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +277 + +AttributeSource.java +file + + + + +2014-01-21T08:38:55.336702Z +a0555599193656bc17e02c3ce23043be +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +4501 + +PEPSValues.java +file + + + + +2014-03-05T09:36:07.946515Z +4a94fe7623d8d6b679efddecd8d49009 +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +7899 + +STORKAttrQueryRequest.java +file + + + + +2014-01-21T08:38:55.336702Z +2d4ac505f71020c482ebbefa10484552 +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +10617 + +CitizenConsent.java +file + + + + +2014-01-21T08:38:55.336702Z +39e236d6888f266d9b4967f19726126c +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +3445 + +AttributeProvidersMap.java +file + + + + +2014-01-21T08:38:55.336702Z +b487da35df5353c8b2aba47ab3cdb68d +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +2608 + +STORKAttrQueryResponse.java +file + + + + +2014-01-21T08:38:55.336702Z +93fc508be2bc0fd29ae453b0868e1d2b +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +9080 + +PersonalAttributeList.java +file + + + + +2014-01-21T08:38:55.336702Z +0036d26679cc31fe7d1bdea1b8b3555a +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +12041 + +AttributeName.java +file + + + + +2014-01-21T08:38:55.336702Z +164e63d1f4e5aeb47d371caff534eaab +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1504 + +PEPSUtil.java +file + + + + +2014-03-05T09:36:07.946515Z +9aa5d40e80a49d19293f42db68feca97 +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +12702 + +PersonalAttribute.java +file + + + + +2014-01-21T08:38:55.336702Z +ce98ef39a754869644b5516cdcfcb40d +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +8914 + +IAttributeListProcessor.java +file + + + + +2014-01-21T08:38:55.336702Z +07efc5b742cc9e4b80a2f8b17fe4b946 +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +4713 + +DateUtil.java +file + + + + +2013-12-20T12:27:56.634475Z +59f9cd2a3d1169a0f1a797b28719921a +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +5702 + +IStorkLogger.java +file + + + + +2013-12-20T12:27:56.634475Z +f15979b29f52d1674103528aed914ae7 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +4766 + +STORKLogoutResponse.java +file + + + + +2014-01-21T08:38:55.336702Z +880a05076cf8412311766aa40cf6a63f +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +5474 + +STORKAuthnRequest.java +file + + + + +2013-12-20T12:27:56.634475Z +3f36e65f0c4f1c7df753784b2e64f00b +2013-10-24T15:44:04.704923Z +56 +emgrtargr + + + + + + + + + + + + + + + + + + + + + +11269 + +AttributeProvider.java +file + + + + +2014-03-05T09:36:07.946515Z +54177f09aad369707021fb3c0f5b2b1e +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2914 + +IStorkSession.java +file + + + + +2013-12-20T12:27:56.634475Z +5a8701b1fd27998d5cf3280a5c99bcb0 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +2745 + +Linker.java +file + + + + +2014-01-21T08:38:55.336702Z +98f46baee16310e3dc59ef224ba5b5ab +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +8950 + +PEPSParameters.java +file + + + + +2014-03-05T09:36:07.946515Z +ba1718cf8c1a52eae81aa6b182315b95 +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +15394 + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeConstants.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeConstants.java.svn-base new file mode 100644 index 000000000..09769641c --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeConstants.java.svn-base @@ -0,0 +1,72 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the STORK PEPS, Commons and Specific errors + * constant identifiers. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.2 $, $Date: 2010-11-17 05:15:28 $ + */ +public enum AttributeConstants { + + /** + * Represents the attribute's name index. + */ + ATTR_NAME_INDEX(0), + /** + * Represents the attribute's type index. + */ + ATTR_TYPE_INDEX(1), + /** + * Represents the attribute's value index. + */ + ATTR_VALUE_INDEX(2), + /** + * Represents the attribute's status index. + */ + ATTR_STATUS_INDEX(3), + /** + * Represents the number of allowed tuples. + */ + NUMBER_TUPLES(4); + + /** + * Represents the constant's value. + */ + private int attribute; + + /** + * Solo Constructor. + * + * @param attr The Attribute Constant value. + */ + AttributeConstants(final int attr) { + + this.attribute = attr; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public int intValue() { + + return attribute; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeName.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeName.java.svn-base new file mode 100644 index 000000000..a44768c7e --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeName.java.svn-base @@ -0,0 +1,74 @@ +package eu.stork.peps.auth.commons; + +/** + * This class is a bean used to store information relative to Attribute Names. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.00 $, $Date: 2013-11-26 $ + */ +public final class AttributeName { + + /** + * Attribute Id. + */ + private String attributeId; + + /** + * Attribute Name. + */ + private String attributeName; + + /** + * Attribute Name Constructor. + * + * @param aId Id of the Attribute Name. + * @param aName Name of the Attribute Name. + */ + public AttributeName(final String aId, final String aName) { + + this.attributeId = aId; + this.attributeName = aName; + } + + /** + * Getter for the attributeId value. + * + * @return The attributeId value. + */ + public String getAttributeId() { + + return attributeId; + } + + /** + * Setter for the attributeId value. + * + * @param aId Id of the Attribute Name. + */ + public void setAttributeId(final String aId) { + + this.attributeId = aId; + } + + /** + * Getter for the attributeName value. + * + * @return The attributeName value. + */ + public String getAttributeName() { + + return attributeName; + } + + /** + * Setter for the attributeName value. + * + * @param name Name of the Attribute Name. + */ + public void setAttributeName(final String name) { + + this.attributeName = name; + } + +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvider.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvider.java.svn-base new file mode 100644 index 000000000..575732e27 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvider.java.svn-base @@ -0,0 +1,123 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.List; + +/** + * This class is a bean used to store the information relative to the Attribute Provider. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.01 $, $Date: 2014-01-13 $ + */ +public final class AttributeProvider implements Serializable { + /** + * Unique identifier. + */ + private static final long serialVersionUID = 7210186241917444559L; + + /** + * Provider Id. + */ + private String providerId; + + /** + * Provider Name. + */ + private String providerName; + + /** + * Allowed groups of attribute names. + */ + private List allowedGroups; + + /** + * Attribute Provider Constructor. + * + * @param pId Id of the Attribute Provider. + * @param pName Name of the Attribute Provider. + */ + public AttributeProvider(final String pId, final String pName, final List pAllowedGroups) { + + this.providerId = pId; + this.providerName = pName; + this.allowedGroups = pAllowedGroups; + } + + /** + * Getter for the providerId value. + * + * @return The providerId value. + */ + public String getProviderId() { + + return providerId; + } + + /** + * Setter for the providerId value. + * + * @param pId Id of the Attribute Provider. + */ + public void setProviderId(final String pId) { + + this.providerId = pId; + } + + /** + * Getter for the providerName value. + * + * @return The providerName value. + */ + public String getProviderName() { + + return providerName; + } + + /** + * Setter for the providerName value. + * + * @param name Name of the Attribute Provider. + */ + public void setProviderName(final String name) { + + this.providerName = name; + } + + /** + * Getter for the allowedGroups value. + * + * @return The allowedGroups value. + */ + public List getAllowedGroups() { + + return allowedGroups; + } + + /** + * Setter for the allowedGroups value. + * + * @param name AllowedGroups of the Attribute Provider. + */ + public void setAllowedGroups(final List pAllowedGroups) { + + this.allowedGroups = pAllowedGroups; + } + + /** + * Check if an attribute name is allowed for this Attribute Provider + * + * @param pAttrName the Attribute Name to check + * @return true if the name is allowed, false otherwise + */ + public boolean isAttributeNameAllowed(final String pAttrName) { + if ( allowedGroups==null || pAttrName==null ) + return false; + else if ( allowedGroups.contains(PEPSParameters.ATTRIBUTE_GROUPS_ALL.toString()) ) + return true; + else if ( allowedGroups.contains(PEPSParameters.ATTRIBUTE_GROUPS_NONE.toString()) ) + return false; + else + return allowedGroups.contains(pAttrName); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvidersMap.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvidersMap.java.svn-base new file mode 100644 index 000000000..85aec2625 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeProvidersMap.java.svn-base @@ -0,0 +1,96 @@ +package eu.stork.peps.auth.commons; + +import java.util.Iterator; +import java.util.LinkedHashMap; + +import org.apache.log4j.Logger; + +/** + * Implementation of the AttributeProviderMap using a LinkedHashMap. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.01 $, $Date: 2013-09-20 $ + * + * @see LinkedHashMap + */ +public class AttributeProvidersMap extends LinkedHashMap + implements IAttributeProvidersMap { + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(AttributeProvidersMap.class.getName()); + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 8949081185106296122L; + + /** + * {@inheritDoc} + */ + @Override + public IPersonalAttributeList get(final AttributeSource key) { + return this.get((Object) key); + } + + /** + * {@inheritDoc} + */ + @Override + public IPersonalAttributeList remove(final AttributeSource key) { + return this.remove((Object) key); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean containsKey(final AttributeSource key) { + return this.containsKey((Object) key); + } + + /** + * {@inheritDoc} + */ + @Override + public Iterator keyIterator() { + return this.keySet().iterator(); + } + + public void trace() { + Iterator iterator; + Iterator iterator2; + AttributeSource source; + IPersonalAttributeList pal; + PersonalAttribute pa; + + iterator = this.keyIterator(); + LOG.trace("Start dumping of AttributeProvidersMap\n======================="); + while (iterator.hasNext()) { + source = iterator.next(); + + LOG.trace("Source details: type [" + source.getSourceType() + "], URL [" + source.getProviderURL() + "]"); + + if(source.getSourceType() == AttributeSource.SOURCE_LOCAL_APROVIDER) { + LOG.trace("-> Attribute Provider: ID [" + source.getProvider().getProviderId() + "], name [" + source.getProvider().getProviderName() + "]"); + } + else { + LOG.trace("-> Country: ID [" + source.getCountry().getCountryId() + "], name [" + source.getCountry().getCountryName() + "]"); + } + + pal = this.get(source); + LOG.trace("++++++++=>"); + iterator2 = pal.iterator(); + while (iterator2.hasNext()) { + pa = iterator2.next(); + + LOG.trace("-> Citizen Attribute: name [" + pa.getName() + "], required [" + pa.isRequired() + "]"); + } + LOG.trace("<=++++++++"); + + LOG.trace("-----------------------"); + } + LOG.trace("END\n======================="); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeSource.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeSource.java.svn-base new file mode 100644 index 000000000..846f54f67 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeSource.java.svn-base @@ -0,0 +1,188 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information relative to the Attribute Source (either AttributeProvider or Country). + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.10 $, $Date: 2013-11-29 $ + */ +public final class AttributeSource implements Serializable { + /** + * Unique identifier. + */ + private static final long serialVersionUID = 432243595968469014L; + + public static final int SOURCE_LOCAL_APROVIDER = 1; + public static final int SOURCE_REMOTE_COUNTRY = 2; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(AttributeSource.class.getName()); + + /** + * Provider source. + */ + private int sourceType; + + /** + * Provider URL. + */ + private String providerURL; + + /** + * The local Attribute Provider. + */ + private AttributeProvider provider; + + /** + * The remote Country. + */ + private Country country; + + /** + * Attribute Source Constructor. + * + * @param provider The local Attribute Provider. + * @param pURL URL of the Attribute Provider. + */ + public AttributeSource(final AttributeProvider provider, final String pURL) { + this.setSourceType(SOURCE_LOCAL_APROVIDER); + + this.setProvider(provider); + this.setProviderURL(pURL); + } + + /** + * Attribute Source Constructor. + * + * @param country The remote Country. + * @param pURL URL of the Country. + */ + public AttributeSource(final Country country, final String pURL) { + this.setSourceType(SOURCE_REMOTE_COUNTRY); + + this.setCountry(country); + this.setProviderURL(pURL); + } + + /** + * @param sourceType the sourceType to set + */ + public void setSourceType(final int sourceType) { + this.sourceType = sourceType; + } + + /** + * @return the sourceType + */ + public int getSourceType() { + return sourceType; + } + + /** + * @param providerURL the providerURL to set + */ + public void setProviderURL(final String providerURL) { + this.providerURL = providerURL; + } + + /** + * @return the providerURL + */ + public String getProviderURL() { + return providerURL; + } + + /** + * @param provider the provider to set + */ + public void setProvider(final AttributeProvider provider) { + this.setSourceType(SOURCE_LOCAL_APROVIDER); + + this.provider = provider; + } + + /** + * @return the provider + */ + public AttributeProvider getProvider() { + return provider; + } + + /** + * @param country the country to set + */ + public void setCountry(final Country country) { + this.setSourceType(SOURCE_REMOTE_COUNTRY); + + this.country = country; + } + + /** + * @return the country + */ + public Country getCountry() { + return country; + } + + /** + * {@inheritDoc} + */ + public boolean equals(Object obj) { + boolean outcome = false; + + LOG.debug("Calling equals with Object."); + if ( obj instanceof AttributeSource ) { + LOG.debug("Calling equals with AttributeSource."); + outcome = this.equals((AttributeSource)obj); + } + + LOG.debug("Object equals outcome: " + outcome); + return outcome; + } + + /** + * Compare the given AttributeSource with the current object in order to determinine + * if they are equal. + * + * @param obj The AttributeSource to compare to + * + * @return true if the two objects are equal + */ + public boolean equals(AttributeSource obj) { + boolean outcome = false; + + if ( this.sourceType==obj.getSourceType() ) { + if ( this.sourceType==AttributeSource.SOURCE_LOCAL_APROVIDER ) { + if ( this.provider.getProviderId().equals(obj.getProvider().getProviderId()) ) + outcome = true; + } + else if ( this.sourceType==AttributeSource.SOURCE_REMOTE_COUNTRY ) { + if ( this.country.getCountryId().equals(obj.getCountry().getCountryId()) ) + outcome = true; + } + } + + LOG.debug("AttributeSource equals outcome: " + outcome); + return outcome; + } + + /** + * {@inheritDoc} + */ + public int hashCode() { + int hash = 1; + hash = hash * 17 + this.sourceType; + if ( this.sourceType==AttributeSource.SOURCE_LOCAL_APROVIDER ) + hash = hash * 31 + this.provider.getProviderName().hashCode(); + else + hash = hash * 31 + this.country.getCountryName().hashCode(); + return hash; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeUtil.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeUtil.java.svn-base new file mode 100644 index 000000000..af7ab6cf3 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/AttributeUtil.java.svn-base @@ -0,0 +1,231 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.lang.StringUtils; + +/** + * This class holds static helper methods. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.5 $, $Date: 2010-12-15 23:19:59 $ + */ +public final class AttributeUtil { + + /** + * Private constructor. Prevents the class from being instantiated. + */ + private AttributeUtil() { + // empty constructor + } + + /** + * Safe escape any given string. + * + * @param value The HTTP Value to escaped. + * + * @return The value escaped value. + */ + public static String escape(final String value) { + + final String attrSep = PEPSValues.ATTRIBUTE_SEP.toString(); + final String attrTupleSep = PEPSValues.ATTRIBUTE_TUPLE_SEP.toString(); + final String attrValueSep = PEPSValues.ATTRIBUTE_VALUE_SEP.toString(); + + final String escAttrSep = "%" + (int) attrSep.charAt(0); + final String escAttrTupleSep = "%" + (int) attrTupleSep.charAt(0); + final String escAttrValueSep = "%" + (int) attrValueSep.charAt(0); + + return value.replace(attrSep, escAttrSep) + .replace(attrTupleSep, escAttrTupleSep) + .replace(attrValueSep, escAttrValueSep); + } + + /** + * Unescape any given string. + * + * @param value The HTTP Value to be unescaped. + * + * @return The value unescaped value. + */ + public static String unescape(final String value) { + final String attrSep = PEPSValues.ATTRIBUTE_SEP.toString(); + final String attrTupleSep = PEPSValues.ATTRIBUTE_TUPLE_SEP.toString(); + final String attrValueSep = PEPSValues.ATTRIBUTE_VALUE_SEP.toString(); + + final String escAttrSep = "%" + (int) attrSep.charAt(0); + final String escAttrTupleSep = "%" + (int) attrTupleSep.charAt(0); + final String escAttrValueSep = "%" + (int) attrValueSep.charAt(0); + + return value.replace(escAttrSep, attrSep) + .replace(escAttrTupleSep, attrTupleSep) + .replace(escAttrValueSep, attrValueSep); + } + + /** + * Appends the string representation of an object to a StringBuilder. + * + * @param strBuilder The StringBuilder to append to. + * @param val The string representation of an object. + */ + public static void appendIfNotNull(final StringBuilder strBuilder, + final Object val) { + + if (val != null) { + strBuilder.append(val); + } + } + + /** + * Given a separator and a list of strings, joins the list, as a string, + * separated by the separator string. + * + * @param list The list of strings to join. + * @param separator The separator string. + * @return the list, as a string, separated by the separator string. + */ + public static String listToString(final List list, + final String separator) { + + final StringBuilder strBuilder = new StringBuilder(); + for (final String s : list) { + if (!StringUtils.isEmpty(s)) { + strBuilder.append(AttributeUtil.escape(s) + separator); + } + } + return strBuilder.toString(); + } + + /** + * Given a separator and a map of strings to strings, joins the map, as a + * string, separated by the separator string with the pair key/value + * concatenated with a '='. + * + * @param map The map of strings to join. + * @param separator The separator string. + * + * @return the map of strings, as a string, separated by the separator string + * with the pair key/value concatenated with a '='. + */ + public static String mapToString(final Map map, + final String separator) { + + final StringBuilder strBuilder = new StringBuilder(); + final Iterator> valuesIt = map.entrySet().iterator(); + while (valuesIt.hasNext()) { + final Entry entry = valuesIt.next(); + strBuilder.append(entry.getKey()); + strBuilder.append('='); + strBuilder.append(AttributeUtil.escape(entry.getValue())); + strBuilder.append(separator); + } + return strBuilder.toString(); + } + + /** + * Validates the attribute value format. + * + * @param value The attribute value to validate. + * + * @return true if value has a valid format. + */ + public static boolean isValidValue(final String value) { + boolean retVal = false; + if (value != null && value.charAt(0) == '[' && value.endsWith("]")) { + final String tmpAttrValue = value.substring(1, value.length() - 1); + final String[] vals = + tmpAttrValue.split(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + if (tmpAttrValue.length() >= 0 + || (vals.length > 0 && vals[0].length() > 0)) { + retVal = true; + } + } + return retVal; + } + + /** + * Validates the attribute type value. It's case insensitive. E.g. return true + * value to: a) "true", "TRUE", "True", ... b) "false", "FALSE", "False", ... + * + * @param type The attribute type value. + * + * @return true if type has a true or false (case insensitive) value. + */ + public static boolean isValidType(final String type) { + return StringUtils.isNotEmpty(type) && (PEPSValues.TRUE.toString().equalsIgnoreCase(type) || PEPSValues.FALSE.toString().equalsIgnoreCase(type)) ; + } + + /** + * Validates the Personal attribute tuple. E.g. name:type:[value]:status + * + * @param tuples The Personal attribute's tuple. + * + * @return true if the tuples' format is valid. + * + * @see PEPSUtil#validateParameter(String, String, String) + * @see String#equalsIgnoreCase(String) + */ + public static boolean hasValidTuples(final String[] tuples) { + boolean retVal = false; + + final int numberTuples = AttributeConstants.NUMBER_TUPLES.intValue(); + if (tuples != null && tuples.length == numberTuples) { + // validate attrName + final int attrNameIndex = AttributeConstants.ATTR_NAME_INDEX.intValue(); + final int attrTypeIndex = AttributeConstants.ATTR_TYPE_INDEX.intValue(); + final int attrValueIndex = AttributeConstants.ATTR_VALUE_INDEX.intValue(); + + retVal = + StringUtils.isNotEmpty(tuples[attrNameIndex]) + && StringUtils.isNotEmpty(tuples[attrTypeIndex]) + && StringUtils.isNotEmpty(tuples[attrValueIndex]) + && AttributeUtil.isValidType(tuples[attrTypeIndex]) + && AttributeUtil.isValidValue(tuples[attrValueIndex]); + } + return retVal; + } + + /** + * Check if all mandatory attributes have values. + * + * @param personalAttrList The Personal Attributes List. + * + * @return true if all mandatory attributes have values, false if at least one + * attribute doesn't have value. + */ + public static boolean checkMandatoryAttributes( + final IPersonalAttributeList personalAttrList) { + + final Iterator itAttributes = + personalAttrList.values().iterator(); + boolean retVal = true; + while (itAttributes.hasNext() && retVal) { + final PersonalAttribute attr = itAttributes.next(); + if (attr.isRequired() + && !STORKStatusCode.STATUS_AVAILABLE.toString() + .equals(attr.getStatus())) { + retVal = false; + } + } + return retVal; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CitizenConsent.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CitizenConsent.java.svn-base new file mode 100644 index 000000000..9ebcfbd5a --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CitizenConsent.java.svn-base @@ -0,0 +1,123 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.ArrayList; +import java.util.List; + +/** + * This class is a bean used to store the information relative to the Citizen + * Consent. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.15 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class CitizenConsent { + + /** + * Mandatory attributes list. + */ + private List mandatoryList; + + /** + * Optional attributes list. + */ + private List optionalList; + + /** + * Citizen Consent default Constructor. + */ + public CitizenConsent() { + this.mandatoryList = new ArrayList(); + this.optionalList = new ArrayList(); + } + + /** + * Getter for the mandatoryList value. + * + * @return The mandatoryList value. + */ + public List getMandatoryList() { + return this.mandatoryList; + } + + /** + * Setter for the mandatoryList value. + * + * @param mandatoryAttrList Mandatory parameters list. + */ + public void setMandatoryList(final List mandatoryAttrList) { + this.mandatoryList = mandatoryAttrList; + } + + /** + * Setter for some mandatoryAttribute. Adds the input parameter to the + * mandatoryList. + * + * @param mandatoryAttr Attribute to add to the mandatoryList. + */ + public void setMandatoryAttribute(final String mandatoryAttr) { + this.mandatoryList.add(mandatoryAttr); + } + + /** + * Getter for the optionalList value. + * + * @return The optionalList value. + */ + public List getOptionalList() { + return optionalList; + } + + /** + * Setter for the optionalList value. + * + * @param optAttrList Optional parameters list. + */ + public void setOptionalList(final List optAttrList) { + this.optionalList = optAttrList; + } + + /** + * Setter for some optionalAttr. Adds the input parameter to the optionalList. + * + * @param optionalAttr Attribute to add to the optionalList. + */ + public void setOptionalAttribute(final String optionalAttr) { + this.optionalList.add(optionalAttr); + } + + /** + * Returns a string in the following format. "Mandatory attributes: + * mandatoryAttr1;mandatoryAttr2;mandatoryAttrN Optional attributes: + * optionalAttr1;optionalAttr2;optionalAttrN" + * + * @return {@inheritDoc} + */ + public String toString() { + final StringBuilder strbldr = new StringBuilder(46); + strbldr.append("Mandatory attributes: "); + for (final String str : mandatoryList) { + strbldr.append(str).append(';'); + } + strbldr.append(" Optional attributes: "); + for (final String str : optionalList) { + strbldr.append(str).append(';'); + } + return strbldr.toString(); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Country.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Country.java.svn-base new file mode 100644 index 000000000..001f9317a --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Country.java.svn-base @@ -0,0 +1,95 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; + +/** + * This class is a bean used to store the information relative to the Country. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.10 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class Country implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1135994036496370993L; + +/** + * Country Id. + */ + private String countryId; + + /** + * Country Name. + */ + private String countryName; + + /** + * Country Constructor. + * + * @param cId Id of the Country. + * @param cName Name of the Country. + */ + public Country(final String cId, final String cName) { + + this.countryId = cId; + this.countryName = cName; + } + + /** + * Getter for the countryId value. + * + * @return The countryId value. + */ + public String getCountryId() { + + return countryId; + } + + /** + * Setter for the countryId value. + * + * @param cId Id of the Country. + */ + public void setCountryId(final String cId) { + + this.countryId = cId; + } + + /** + * Getter for the countryName value. + * + * @return The countryName value. + */ + public String getCountryName() { + + return countryName; + } + + /** + * Setter for the countryName value. + * + * @param name Name of the Country. + */ + public void setCountryName(final String name) { + + this.countryName = name; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CountryCodes.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CountryCodes.java.svn-base new file mode 100644 index 000000000..54345f3ea --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/CountryCodes.java.svn-base @@ -0,0 +1,79 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.Arrays; +import java.util.List; + +/** + * This class contains all the ISO 3166-1 Alpha 3 Country Codes. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.2 $, $Date: 2011-04-14 00:24:56 $ + */ +public final class CountryCodes { + + /** + * Private Constructor. + */ + private CountryCodes() { + + } + + /** + * ISO 3166-1 Alpha 3 Country Codes. + */ + private static List countrysAlpha3 = Arrays.asList("ABW", "AFG", + "AGO", "AIA", "ALA", "ALB", "AND", "ANT", "ARE", "ARG", "ARM", "ASM", + "ATA", "ATF", "ATG", "AUS", "AUT", "AZE", "BDI", "BEL", "BEN", "BES", + "BFA", "BGD", "BGR", "BHR", "BHS", "BIH", "BLM", "BLR", "BLZ", "BMU", + "BOL", "BRA", "BRB", "BRN", "BTN", "BUR", "BVT", "BWA", "BYS", "CAF", + "CAN", "CCK", "CHE", "CHL", "CHN", "CIV", "CMR", "COD", "COG", "COK", + "COL", "COM", "CPV", "CRI", "CSK", "CUB", "CUW", "CXR", "CYM", "CYP", + "CZE", "DEU", "DJI", "DMA", "DNK", "DOM", "DZA", "ECU", "EGY", "ERI", + "ESH", "ESP", "EST", "ETH", "FIN", "FJI", "FLK", "FRA", "FRO", "FSM", + "GAB", "GBR", "GEO", "GGY", "GHA", "GIB", "GIN", "GLP", "GMB", "GNB", + "GNQ", "GRC", "GRD", "GRL", "GTM", "GUF", "GUM", "GUY", "HKG", "HMD", + "HND", "HRV", "HTI", "HUN", "IDN", "IMN", "IND", "IOT", "IRL", "IRN", + "IRQ", "ISL", "ISR", "ITA", "JAM", "JEY", "JOR", "JPN", "KAZ", "KEN", + "KGZ", "KHM", "KIR", "KNA", "KOR", "KWT", "LAO", "LBN", "LBR", "LBY", + "LCA", "LIE", "LKA", "LSO", "LTU", "LUX", "LVA", "MAC", "MAF", "MAR", + "MCO", "MDA", "MDG", "MDV", "MEX", "MHL", "MKD", "MLI", "MLT", "MMR", + "MNE", "MNG", "MNP", "MOZ", "MRT", "MSR", "MTQ", "MUS", "MWI", "MYS", + "MYT", "NAM", "NCL", "NER", "NFK", "NGA", "NIC", "NIU", "NLD", "NOR", + "NPL", "NRU", "NZL", "OMN", "PAK", "PAN", "PCN", "PER", "PHL", "PLW", + "PNG", "POL", "PRI", "PRK", "PRT", "PRY", "PSE", "PYF", "QAT", "REU", + "ROM", "ROU", "RUS", "RWA", "SAU", "SCG", "SDN", "SEN", "SGP", "SGS", + "SHN", "SJM", "SLB", "SLE", "SLV", "SMR", "SOM", "SPM", "SRB", "STP", + "SUR", "SVK", "SVN", "SXW", "SWE", "SWZ", "SYC", "SYR", "TCA", "TCD", + "TGO", "THA", "TJK", "TKL", "TKM", "TLS", "TMP", "TON", "TTO", "TUN", + "TUR", "TUV", "TWN", "TZA", "UGA", "UKR", "UMI", "URY", "USA", "UZB", + "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF", "WSM", "YEM", + "YUG", "ZAF", "ZAR", "ZMB", "ZWE"); + + /** + * Searches the CountryCode (3166-1 alpha3 format) an return true if it + * exists. + * + * @param countryCode The Country code to search. + * + * @return true if the CountryCode exists, false otherwise. + */ + public static boolean hasCountryCodeAlpha3(final String countryCode) { + + return CountryCodes.countrysAlpha3.contains(countryCode); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/DateUtil.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/DateUtil.java.svn-base new file mode 100644 index 000000000..9c0bd6775 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/DateUtil.java.svn-base @@ -0,0 +1,169 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.sql.Timestamp; +import java.util.GregorianCalendar; + +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.joda.time.Years; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; + +import eu.stork.peps.auth.commons.exceptions.SecurityPEPSException; + +/** + * This class holds static helper methods for Date Operations. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.4 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class DateUtil { + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(DateUtil.class.getName()); + + /** + * yyyy Date format size. + */ + private static final int YEAR_DATE_SIZE = 4; + + /** + * yyyyMM Date format size. + */ + private static final int MONTH_DATE_SIZE = 6; + + /** + * Private constructor. Prevents the class from being instantiated. + */ + private DateUtil() { + // empty constructor + } + + /** + * Fulfils dateValue with a valid date. The following roles are applied: a) If + * the dateValue only contains the year then fulfils with last year's day. + * e.g. this method returns 19951231 to the 1995 dateValue. b) If the + * dateValue contains the year and the month then fulfils with last month's + * day. e.g. this method returns 19950630 to the 199505 dateValue. + * + * @param dateValue The date to be fulfilled. + * + * @return The dateValue fulfilled. + */ + private static String fulfilDate(final String dateValue) { + + final StringBuffer strBuf = new StringBuffer(); + strBuf.append(dateValue); + // if the IdP just provides the year then we must fullfil the date. + if (dateValue.length() == YEAR_DATE_SIZE) { + strBuf.append(PEPSValues.LAST_MONTH.toString()); + } + // if the IdP provides the year and the month then we must fullfil the + // date. + if (dateValue.length() == MONTH_DATE_SIZE + || strBuf.length() == MONTH_DATE_SIZE) { + // IdP doesn't provide the day, so we will use DateTime to + // calculate it. + final String noDayCons = PEPSValues.NO_DAY_DATE_FORMAT.toString(); + final DateTimeFormatter fmt = DateTimeFormat.forPattern(noDayCons); + final DateTime dateTime = fmt.parseDateTime(strBuf.toString()); + // Append the last month's day. + strBuf.append(dateTime.dayOfMonth().withMaximumValue().getDayOfMonth()); + } + + return strBuf.toString(); + } + + /** + * Validates the dateValue format: a) if has a valid size; b) if has a numeric + * value; Note: dateValue must have the format yyyyMMdd. + * + * @param dateValueTmp The date to be validated. + * @param pattern The accepted date format. + * + * @return true if the date has a valid format. + */ + public static boolean isValidFormatDate(final String dateValueTmp, + final String pattern) { + + boolean retVal = true; + try { + final String dateValue = DateUtil.fulfilDate(dateValueTmp); + + final DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); + fmt.parseDateTime(dateValue); + } catch (final Exception e) { + // We catch Exception because we only have to return false + // value! + retVal = false; + } + return retVal; + } + + /** + * Calculates the age for a given date string. + * + * @param dateVal The date to be validated. + * @param now The current date. + * @param pattern The date pattern. + * + * @return The age value. + */ + public static int calculateAge(final String dateVal, final DateTime now, + final String pattern) { + + if (DateUtil.isValidFormatDate(dateVal, pattern)) { + try { + final String dateValueTemp = DateUtil.fulfilDate(dateVal); + final DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); + final DateTime dateTime = fmt.parseDateTime(dateValueTemp); + // Calculating age + final Years age = Years.yearsBetween(dateTime, now); + + return age.getYears(); + } catch (final IllegalArgumentException e) { + LOG.warn("Invalid date format (" + pattern + + ") or an invalid dateValue."); + throw new SecurityPEPSException( + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorCode()), + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorMessage()), + e); + } + } else { + LOG.warn("Couldn't calculate Age, invalid date!"); + throw new SecurityPEPSException( + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorCode()), + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorMessage())); + } + + } + + /** + * Generates the current timestamp. + * + * @return timestamp The current timestamp + */ + public static Timestamp currentTimeStamp() { + final GregorianCalendar cal = new GregorianCalendar(); + final long millis = cal.getTimeInMillis(); + return new Timestamp(millis); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeListProcessor.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeListProcessor.java.svn-base new file mode 100644 index 000000000..b13c70f04 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeListProcessor.java.svn-base @@ -0,0 +1,148 @@ +package eu.stork.peps.auth.commons; + +import java.util.List; +import java.util.Map; + +/** + * Interface for {@link AttributeListProcessor}. + * + * @author ricardo.ferreira@multicert.com + * + * @version $Revision: $, $Date: $ + * + * @see IPersonalAttributeList + */ +public interface IAttributeListProcessor { + + /** + * Checks if attribute list only contains allowed attributes. + * + * @param attrList the requested attribute list + * @param attributes the allowed attributes + * + * @return true is all the attributes are allowed. + * + * @see IPersonalAttributeList + */ + boolean hasAllowedAttributes(final IPersonalAttributeList attrList, final List attributes); + + /** + * Lookup for business attribute. + * + * @param attrList the requested attribute list + * @param normalAttributes the normal attributes + * + * @return true is at least one business attribute was requested. + * + * @see IPersonalAttributeList + */ + boolean hasBusinessAttributes(final IPersonalAttributeList attrList, final List normalAttributes); + + /** + * Lookup for business attribute in normal attribute list (loaded by + * implementation). + * + * @param attrList the requested attribute list + * + * @return true is at least one business attribute was requested. + * + * @see IPersonalAttributeList + */ + boolean hasBusinessAttributes(final IPersonalAttributeList attrList); + + /** + * Adds eIdentifier, name, surname, and DateOfBirth attributes to get business + * attributes from some AP. + * + * @param attrList the requested attribute list + * @param attributes the list of attributes to add (eIdentifier, name, + * surname, and DateOfBirth). + * + * @return the requested attribute list and the new attributes added + * (eIdentifier, name, surname, and DateOfBirth). + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList addAPMandatoryAttributes(final IPersonalAttributeList attrList, final List attributes); + + /** + * Adds eIdentifier, name, surname, and DateOfBirth attributes, loaded by + * implementation, to get business attributes from some AP. + * + * @param attrList the requested attribute list + * + * @return the requested attribute list and the new attributes added + * (eIdentifier, name, surname, and DateOfBirth). + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList addAPMandatoryAttributes(final IPersonalAttributeList attrList); + + /** + * Removes from attribute list the given list of attributes. + * + * @param attrList the requested attribute list + * @param attributes the list of attributes to remove. + * + * @return the requested attribute list and the attributes removed. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList removeAPMandatoryAttributes(final IPersonalAttributeList attrList, final List attributes); + + /** + * Removes from attribute list the given list of attributes and change + * attributes status if attribute was optional in the request. + * + * @param attrList the requested attribute list + * @param attributes the map of attributes (attribute name, mandatory/optional) to remove. + * + * @return the requested attribute list and the attributes removed + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList removeAPMandatoryAttributes(IPersonalAttributeList attrList, Map attributes); + + /** + * Checks if mandate attribute exist in the requested Attribute List. Power + * attribute name to lookup is loaded by implementation. + * + * @param attrList the requested attribute list. + * + * @return true if mandate attribute exists or false otherwise. + * + * @see IPersonalAttributeList + */ + boolean hasPowerAttribute(final IPersonalAttributeList attrList); + + /** + * Checks if attribute name was requested and has value. + * + * @param attrList the requested attribute list. + * @param attrName the attribute name to lookup for . + * + * @return true if attribute was requested and has value or false otherwise. + * + * @see IPersonalAttributeList + */ + boolean hasAttributeValue(final IPersonalAttributeList attrList, final String attrName); + + /** + * Checks if attribute has value. + * + * @param attr the attribute to check. + * + * @return true if has value; + * + * @see PersonalAttribute + */ + boolean hasAttributeValue(final PersonalAttribute attr); + + /** + * Gets a map (attribute name, attribute isRequired) of attributes added to attribute list. + * + * @return the Map of attributes added and if is required to attribute list. + */ + Map getNormalAttributesAdded(); + +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeProvidersMap.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeProvidersMap.java.svn-base new file mode 100644 index 000000000..733399ca3 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IAttributeProvidersMap.java.svn-base @@ -0,0 +1,82 @@ +package eu.stork.peps.auth.commons; + +import java.util.Iterator; + +/** + * Interface for Attributes Providers map. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.00 $, $Date: 2013-09-20 $ + */ +public interface IAttributeProvidersMap { + + /** + * Returns the object associated the the given key. + * + * @param key with which the specified value is to be associated. + * + * @return The object associated the the given key. + */ + IPersonalAttributeList get(AttributeSource key); + + /** + * Associates a key to a value, and inserts them in the session object. + * + * @param key with which the specified value is to be associated. + * @param value to be associated with the specified key. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + Object put(AttributeSource key, IPersonalAttributeList value); + + /** + * Removes the mapping for this key. + * + * @param key with which the specified value is to be associated. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + IPersonalAttributeList remove(AttributeSource key); + + /** + * Returns the number of key-value mappings in this map. + * + * @return the number of key-value mappings in this map. + */ + int size(); + + /** + * Returns true if this map contains a mapping for the specified key. + * + * @param key with which the specified value is to be associated. + * + * @return true if this map contains a mapping for the specified key. + */ + boolean containsKey(AttributeSource key); + + /** + * Removes all mappings from this map. + */ + void clear(); + + /** + * Returns true if this map contains no key-value mappings. + * + * @return true if this map contains no key-value mappings. + */ + boolean isEmpty(); + + /** + * Returns an Iterator of the keys contained in this map. The implementation must + * take care in order for the Iterator to have predictable order of the returned + * keys. + * + * @return an iterator of the keys contained in this map + */ + Iterator keyIterator(); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IPersonalAttributeList.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IPersonalAttributeList.java.svn-base new file mode 100644 index 000000000..b24c915c0 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IPersonalAttributeList.java.svn-base @@ -0,0 +1,194 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; + +/** + * Interface for {@link PersonalAttributeList}. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.16 $, $Date: 2010-11-17 05:15:28 $ + * + * @see PersonalAttribute + */ +@SuppressWarnings("PMD.CloneMethodMustImplementCloneable") +public interface IPersonalAttributeList extends Iterable, + Cloneable { + + /** + * Associates the specified value with the specified key in this Personal + * Attribute List. + * + * @param key with which the specified value is to be associated. + * @param value to be associated with the specified key. + * + * @return the previous value associated with key, or null if there was no + * mapping for key. + * + * @see PersonalAttribute + */ + PersonalAttribute put(String key, PersonalAttribute value); + + /** + * Returns the value to which the specified key is mapped, or null if this map + * contains no mapping for the key. + * + * @param key whose associated value is to be returned. + * + * @return The value to which the specified key is mapped, or null if this map + * contains no mapping for the key. + * + * @see PersonalAttribute + */ + PersonalAttribute get(Object key); + + /** + * Adds to the PersonalAttributeList the given PersonalAttribute. It sets the + * attribute name as the key to the attribute value. + * + * @param value PersonalAttribute to add to the PersonalAttributeList + */ + void add(PersonalAttribute value); + + /** + * Get the size of the Personal Attribute List. + * + * @return size of the Personal Attribute List. + */ + int size(); + + /** + * Checks if the Personal Attribute List contains the given key. + * + * @param key with which the specified value is to be associated. + * + * @return true if the Personal Attribute List contains the given key, false + * otherwise. + */ + boolean containsKey(Object key); + + /** + * Getter for the iterator of the Personal Attribute List values. + * + * @return The iterator for the Personal Attribute List values. + * + * @see PersonalAttribute + */ + Iterator iterator(); + + /** + * Creates a Personal Attribute List from a String representing an Attribute + * List. + * + * @param attrList String Object representing the attribute list. + */ + void populate(String attrList); + + /** + * Removes the mapping for this key from this map if present. + * + * @param key key whose mapping is to be removed from the map. + * @return previous value associated with specified key, or null if + * there was no mapping for key. A null return can also + * indicate that the map previously associated null with the + * specified key. + */ + PersonalAttribute remove(Object key); + + /** + * Returns a collection view of the values contained in this map. The + * collection is backed by the map, so changes to the map are reflected in the + * collection, and vice-versa. The collection supports element removal, which + * removes the corresponding mapping from this map, via the + * Iterator.remove, Collection.remove, removeAll, + * retainAll, and clear operations. It does not support the + * add or addAll operations. + * + * @return a collection view of the values contained in this map. + */ + Collection values(); + + /** + * Returns a {@link Set} view of the keys contained in this map. + * The set is backed by the map, so changes to the map are + * reflected in the set, and vice-versa. If the map is modified + * while an iteration over the set is in progress (except through + * the iterator's own remove operation), the results of + * the iteration are undefined. The set supports element removal, + * which removes the corresponding mapping from the map, via the + * Iterator.remove, Set.remove, + * removeAll, retainAll, and clear + * operations. It does not support the add or addAll + * operations. + * + * @return a set view of the keys contained in this map + */ + Set keySet(); + + + /** + * Returns a IPersonalAttributeList of the complex attributes. + * + * @return an IPersonalAttributeList of the complex attributes. + */ + IPersonalAttributeList getComplexAttributes(); + + /** + * Returns a IPersonalAttributeList of the simple value attributes. + * + * @return an IPersonalAttributeList of the simple value attributes. + */ + IPersonalAttributeList getSimpleValueAttributes(); + + /** + * Returns a IPersonalAttributeList of the mandatory attributes in this map. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map. + */ + IPersonalAttributeList getMandatoryAttributes(); + + /** + * Returns a IPersonalAttributeList of the optional attributes in this map. + * + * @return an IPersonalAttributeList of the optional attributes contained in this map. + */ + IPersonalAttributeList getOptionalAttributes(); + + /** + * Returns true if this map contains no key-value mappings. + * + * @return true if this map contains no key-value mappings. + */ + boolean isEmpty(); + + /** + * Returns true if this map contains at least one element that doesn't have value. + * + * @return true if this map contains at least one element that doesn't have value. + */ + boolean hasMissingValues(); + + /** + * Returns a copy of this IPersonalAttributeList instance. + * + * @return The copy of this IPersonalAttributeList. + */ + Object clone() throws CloneNotSupportedException; + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkLogger.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkLogger.java.svn-base new file mode 100644 index 000000000..33eb618f0 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkLogger.java.svn-base @@ -0,0 +1,239 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * Interface for stork logging. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.10 $, $Date: 2011-02-17 22:44:34 $ + */ +public interface IStorkLogger { + + /** + * Getter for SpApplication. + * + * @return The SpApplication value. + */ + String getSpApplication(); + + /** + * Setter for SpApplication. + * + * @param spApplication The SP Application. + */ + void setSpApplication(String spApplication); + + /** + * Getter for ProviderName. + * + * @return The ProviderName value. + */ + String getProviderName(); + + /** + * Setter for ProviderName. + * + * @param providerName The provider name. + */ + void setProviderName(String providerName); + + /** + * + * Getter for Origin. + * + * @return The Origin value. + * + */ + String getOrigin(); + + /** + * Setter for Origin. + * + * @param origin The origin. + */ + void setOrigin(String origin); + + /** + * + * Getter for QAA Level. + * + * @return The QAA Level value. + * + */ + int getQaaLevel(); + + /** + * Setter for QAA Level. + * + * @param qaaLevel The qaa level. + */ + void setQaaLevel(int qaaLevel); + + /** + * + * Getter for timestamp. + * + * @return The timestamp value. + * + */ + String getTimestamp(); + + /** + * Setter for timestamp. + * + * @param timestamp The request's timestamp. + */ + void setTimestamp(String timestamp); + + /** + * Getter for InResponseTo. + * + * @return The InResponseTo value. + */ + String getInResponseTo(); + + /** + * Setter for InResponseTo. + * + * @param inResponseTo The Saml's response id. + */ + void setInResponseTo(String inResponseTo); + + /** + * Getter for InResponseToSPReq. + * + * @return The InResponseToSPReq value. + */ + String getInResponseToSPReq(); + + /** + * Setter for InResponseToSPRequ. + * + * @param inResponseToSPReq The Saml's response id. + */ + void setInResponseToSPReq(String inResponseToSPReq); + + /** + * Getter for opType. + * + * @return The opType value. + */ + String getOpType(); + + /** + * Setter for opType. + * + * @param opType The operation type. + */ + void setOpType(String opType); + + /** + * Getter for destination. + * + * @return The destination value. + */ + String getDestination(); + + /** + * Setter for destinationIp. + * + * @param destination The remote IP. + */ + void setDestination(String destination); + + /** + * Getter for message or assertion consumer. + * + * @return The message or assertion consumer. + */ + String getMessage(); + + /** + * Setter for message or assertion consumer. + * + * @param message or assertion consumer. + */ + void setMessage(String message); + + /** + * Getter for country. + * + * @return The country value. + */ + String getCountry(); + + /** + * Setter for country. + * + * @param country The country. + */ + void setCountry(String country); + + /** + * Getter for samlHash. + * + * @return The samlHash value. + */ + byte[] getSamlHash(); + + /** + * Setter for samlHash. + * + * @param samlHash the encrypted SAML token + */ + void setSamlHash(byte[] samlHash); + + /** + * Getter for msgId. + * + * @return the msgId + */ + String getMsgId(); + + /** + * Setter for msgId. + * + * @param msgId the ID of the originator of this message + */ + void setMsgId(String msgId); + + /** + * Getter for sPMsgId. + * + * @return the sPMsgId + */ + String getSPMsgId(); + + /** + * Setter for sPMsgId. + * + * @param sPMsgId the ID of the originator of this message + */ + void setSPMsgId(String sPMsgId); + + /** + * The format of the returned String must be the following: + * "requestCounter#ddMMMyyyykk:mm:ss#opType#originIp#originName + * #destinationIp#destinationName#samlHash#[originatorName#msgId#]" + * + * The values enclosed in '[]' only apply when logging responses. + * + * @return {@inheritDoc} + */ + @Override + String toString(); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkSession.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkSession.java.svn-base new file mode 100644 index 000000000..f38b41838 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/IStorkSession.java.svn-base @@ -0,0 +1,85 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * Interface for stork session. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.9 $, $Date: 2010-11-17 05:15:28 $ + */ +public interface IStorkSession { + + /** + * Returns the object associated the the given key. + * + * @param key with which the specified value is to be associated. + * + * @return The object associated the the given key. + */ + Object get(Object key); + + /** + * Associates a key to a value, and inserts them in the session object. + * + * @param key with which the specified value is to be associated. + * @param value to be associated with the specified key. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + Object put(String key, Object value); + + /** + * Removes the mapping for this key. + * + * @param key with which the specified value is to be associated. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + Object remove(Object key); + + /** + * Returns the number of key-value mappings in this map. + * + * @return the number of key-value mappings in this map. + */ + int size(); + + /** + * Returns true if this map contains a mapping for the specified key. + * + * @param key with which the specified value is to be associated. + * + * @return true if this map contains a mapping for the specified key. + */ + boolean containsKey(Object key); + + /** + * Removes all mappings from this map. + */ + void clear(); + + /** + * Returns true if this map contains no key-value mappings. + * + * @return true if this map contains no key-value mappings. + */ + boolean isEmpty(); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Linker.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Linker.java.svn-base new file mode 100644 index 000000000..6e7c891da --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/Linker.java.svn-base @@ -0,0 +1,316 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information of Attribute Providers, the Attribute + * List to be requested, the Assertions returned by the Attribute Providers and the values + * that each Attribute has. This information along with the current status of the Linker (the + * attribute providers that were queried and the remaining providers) is used by the PEPS + * actions in order to complete the Attribute gathering. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.50 $, $Date: 2013-11-28 $ + */ +public final class Linker implements Serializable { + /** + * Unique identifier. + */ + private static final long serialVersionUID = -3268006381745987237L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(Linker.class.getName()); + + /** + * Attributes Providers map. + */ + private IAttributeProvidersMap attributeProvidersMap; + + /** + * Assertion map. + */ + private LinkedHashMap assertions; + + /** + * The current index of local (domestic) Attribute Providers. + */ + private int localIndex; + + /** + * The current index of remote (foreign) Attribute Providers - countries. + */ + private int remoteIndex; + + /** + * Constructs an empty Linker object. + */ + public Linker() { + localIndex = 0; + remoteIndex = 0; + + assertions = new LinkedHashMap(); + } + + /** + * Based on the internal state of the Linker it returns the next local Attribute Source + * + * @return The next Attribute Source or null if not found + * + * @see AttributeSource + */ + public AttributeSource getNextLocalProvider() { + Iterator iterator; + AttributeSource source, found; + int curIndex = 0; + + found = null; + + if ( attributeProvidersMap!=null && !attributeProvidersMap.isEmpty() ) { + iterator = attributeProvidersMap.keyIterator(); + while (iterator.hasNext()) { + source = iterator.next(); + + if ( source.getSourceType()==AttributeSource.SOURCE_LOCAL_APROVIDER ) { + if ( curIndex>=localIndex ) { + found = source; + + break; + } + + curIndex++; + } + } + } + + return found; + } + + /** + * Based on the internal state of the Linker it returns the next remote Attribute Source + * + * @return The next Attribute Source or null if not found + * + * @see AttributeSource + */ + public AttributeSource getNextRemoteProvider() { + Iterator iterator; + AttributeSource source, found; + int curIndex = 0; + + found = null; + + if ( attributeProvidersMap !=null && !attributeProvidersMap.isEmpty() ) { + iterator = attributeProvidersMap.keyIterator(); + while (iterator.hasNext()) { + source = iterator.next(); + + if ( source.getSourceType()==AttributeSource.SOURCE_REMOTE_COUNTRY ) { + if ( curIndex>=remoteIndex ) { + found = source; + + break; + } + + curIndex++; + } + } + } + + return found; + } + + /** + * It updates the Linker with the values returned by the Attribute Source. It also advances + * to the next index in order to mark this attribute source as completed. + * + * @param source The Attribute Source that was queried for attribute values. + * @param attrResponse The attrResponse returned by the Attribute Source that contains the attribute values. + * + * @see AttributeSource, STORKAttrQueryResponse + */ + public void setProviderReponse(AttributeSource source, STORKAttrQueryResponse attrResponse) { + if ( source.getSourceType()==AttributeSource.SOURCE_REMOTE_COUNTRY ) + remoteIndex++; + else + localIndex++; + + //Assertion storage + this.assertions.put(source, attrResponse); + + this.attributeProvidersMap.put(source, attrResponse.getPersonalAttributeList()); + //this.attributeProvidersMap.put(source, attrResponse.getTotalPersonalAttributeList()); + } + + /** + * Reset the internal state of the local Attribute Source in order to start over. + */ + public void resetLocalIndex() { + localIndex = 0; + } + + /** + * Reset the internal state of the remote Attribute Source in order to start over. + */ + public void resetRemoteIndex() { + remoteIndex = 0; + } + + /** + * Setter for attributeProvidersMap. + * + * @param attributeProvidersMap The attributeProvidersMap to set. + */ + public void setAttributeProvidersMap(IAttributeProvidersMap attributeProvidersMap) { + this.attributeProvidersMap = attributeProvidersMap; + } + + /** + * Getter for attributeProvidersMap. + * + * @return attributeProvidersMap + */ + public IAttributeProvidersMap getAttributeProvidersMap() { + return attributeProvidersMap; + } + + /** + * Returns the Personal Attribute list of the provided Attribute Source. + * + * @param source The attributeSource in reference + * + * @return The IPersonalAttributeList assosiated with this source or null if empty + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getProviderAttributes(AttributeSource source) { + if ( attributeProvidersMap.containsKey(source) ) + return attributeProvidersMap.get(source); + else + return null; + } + + /** + * Returns the merged Personal Attribute list from all the Attribute Sources. + * + * @return The IPersonalAttributeList merged Personal Attribute list or null if empty + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getAllAttributes() { + Iterator iterator; + AttributeSource source; + IPersonalAttributeList list, merged; + + merged = null; + + if ( attributeProvidersMap !=null && !attributeProvidersMap.isEmpty() ) { + iterator = attributeProvidersMap.keyIterator(); + + merged = new PersonalAttributeList(); + while (iterator.hasNext()) { + source = iterator.next(); + list = this.getProviderAttributes(source); + + for (final PersonalAttribute pa : list) { + merged.add(pa); + } + } + } + + return merged; + } + + /** + * Returns a List with all the assertions gathered by the AAS-PEPS module + * returned both by local APs or remote A-PEPS. + * + * @return The assertions returned from the APs and A-PEPS + */ + public List getAttrQueryResponseList() { + List originalAssertions; + + originalAssertions = new ArrayList(); + + //Gather all assertions + for (STORKAttrQueryResponse element : this.assertions.values()) { + originalAssertions.add(element); + } + + return originalAssertions; + } + + /** + * Checks the internal state of the Linker and if all Attribute Sources where visited + * returns true, otherwise it returns false. So if you go directly from AtPLinkerAction + * to MoreAttributesAction the call will have, since the method setProviderReponse + * was not executed from every Attribute Source. + * + * @return true if everything is OK, false otherwise + */ + public boolean isComplete() { + boolean outcome = false; + + LOG.debug("Check if linkder is complete: R[" + remoteIndex + "], L[" + localIndex + "], S[" + attributeProvidersMap.size() + "]"); + if ( attributeProvidersMap !=null && !attributeProvidersMap.isEmpty() ) { + if ( (remoteIndex + localIndex)==attributeProvidersMap.size() ) + outcome = true; + } + else { + outcome = true; + } + + return outcome; + } + + /** + * Merge the two Linker objects. + * + * @param previous The other Linker object to merge with this one. + */ + public void mergeWith(Linker previous) { + //BEFORE + if ( LOG.isDebugEnabled() ) { + LOG.debug("The attributeProvidersMap from the current object."); + ((AttributeProvidersMap)this.attributeProvidersMap).trace(); + LOG.debug("The attributeProvidersMap from the provided object."); + ((AttributeProvidersMap)previous.getAttributeProvidersMap()).trace(); + } + + IAttributeProvidersMap map = previous.getAttributeProvidersMap(); + Iterator items = map.keyIterator(); + while( items.hasNext() ) { + AttributeSource item = items.next(); + IPersonalAttributeList pal = map.get(item); + + if ( this.attributeProvidersMap.containsKey(item) ) { + IPersonalAttributeList new_pal = this.attributeProvidersMap.get(item); + + for(PersonalAttribute pa : pal) + new_pal.add(pa); + } + else { + if ( item.getSourceType()==AttributeSource.SOURCE_REMOTE_COUNTRY ) + remoteIndex++; + else + localIndex++; + + this.attributeProvidersMap.put(item, pal); + } + } + + //AFTER + if ( LOG.isDebugEnabled() ) { + LOG.debug("The attributeProvidersMap after the merge."); + ((AttributeProvidersMap)this.attributeProvidersMap).trace(); + } + } +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSErrors.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSErrors.java.svn-base new file mode 100644 index 000000000..5da9ba494 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSErrors.java.svn-base @@ -0,0 +1,392 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the STORK PEPS, Commons and Specific errors + * constant identifiers. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.10 $, $Date: 2011-02-17 22:44:34 $ + */ +public enum PEPSErrors { + + /** + * Represents the 'authenticationFailed' constant error identifier. + */ + AUTHENTICATION_FAILED_ERROR("authenticationFailed"), + /** + * Represents the 'spCountrySelector.errorCreatingSAML' constant error + * identifier. + */ + SP_COUNTRY_SELECTOR_ERROR_CREATE_SAML("spCountrySelector.errorCreatingSAML"), + /** + * Represents the 'spCountrySelector.destNull' constant error identifier. + */ + SP_COUNTRY_SELECTOR_DESTNULL("spCountrySelector.destNull"), + /** + * Represents the 'spCountrySelector.invalidAttr' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_ATTR("spCountrySelector.invalidAttr"), + /** + * Represents the 'spCountrySelector.invalidProviderName' constant error + * identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_PROVIDER_NAME( + "spCountrySelector.invalidProviderName"), + /** + * Represents the 'spCountrySelector.invalidQaaSPid' constant error + * identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_QAASPID("spCountrySelector.invalidQaaSPid"), + /** + * Represents the 'spCountrySelector.invalidSpId' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_SPID("spCountrySelector.invalidSpId"), + /** + * Represents the 'spCountrySelector.invalidSPQAA' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_SPQAA("spCountrySelector.invalidSPQAA"), + /** + * Represents the 'spCountrySelector.invalidSpURL' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_SPURL("spCountrySelector.invalidSpURL"), + /** + * Represents the 'spCountrySelector.spNotAllowed' constant error identifier. + */ + SP_COUNTRY_SELECTOR_SPNOTALLOWED("spCountrySelector.spNotAllowed"), + + /** + * Represents the 'sProviderAction.errorCreatingSAML' constant error + * identifier. + */ + SPROVIDER_SELECTOR_ERROR_CREATE_SAML("sProviderAction.errorCreatingSAML"), + /** + * Represents the 'sProviderAction.attr' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_ATTR("sProviderAction.invalidAttr"), + /** + * Represents the 'sProviderAction.country' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_COUNTRY("sProviderAction.invalidCountry"), + /** + * Represents the 'sProviderAction.relayState' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_RELAY_STATE("sProviderAction.invalidRelayState"), + /** + * Represents the 'sProviderAction.saml' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SAML("sProviderAction.invalidSaml"), + /** + * Represents the 'sProviderAction.spAlias' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPALIAS("sProviderAction.invalidSPAlias"), + /** + * Represents the 'sProviderAction.spDomain' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPDOMAIN("sProviderAction.invalidSPDomain"), + /** + * Represents the 'sProviderAction.spId' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPID("sProviderAction.invalidSPId"), + /** + * Represents the 'sProviderAction.spQAA' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPQAA("sProviderAction.invalidSPQAA"), + /** + * Represents the 'sProviderAction.spQAAId' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPQAAID("sProviderAction.invalidSPQAAId"), + /** + * Represents the 'sProviderAction.spRedirect' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPREDIRECT("sProviderAction.invalidSPRedirect"), + /** + * Represents the 'sPPowerValidationAction.invalidSPPVAttrList' constant error identifier. + */ + SPPOWERVALIDATION_SELECTOR_INVALID_SP_PV_ATTR_LIST("sPPowerValidationAction.invalidSPPVAttrList"), + + /** + * Represents the 'sProviderAction.invalidSPProviderName' constant error + * identifier. + */ + SPROVIDER_SELECTOR_INVALID_SP_PROVIDERNAME( + "sProviderAction.invalidSPProviderName"), + /** + * Represents the 'sProviderAction.spNotAllowed' constant error identifier. + */ + SPROVIDER_SELECTOR_SPNOTALLOWED("sProviderAction.spNotAllowed"), + + + /** + * Represents the 'internalError' constant error identifier. + */ + INTERNAL_ERROR("internalError"), + + /** + * Represents the 'colleagueRequest.attrNull' constant error identifier. + */ + COLLEAGUE_REQ_ATTR_NULL("colleagueRequest.attrNull"), + /** + * Represents the 'colleagueRequest.errorCreatingSAML' constant error + * identifier. + */ + COLLEAGUE_REQ_ERROR_CREATE_SAML("colleagueRequest.errorCreatingSAML"), + /** + * Represents the 'colleagueRequest.invalidCountryCode' constant error + * identifier. + */ + COLLEAGUE_REQ_INVALID_COUNTRYCODE("colleagueRequest.invalidCountryCode"), + /** + * Represents the 'colleagueRequest.invalidDestUrl' constant error identifier. + */ + COLLEAGUE_REQ_INVALID_DEST_URL("colleagueRequest.invalidDestUrl"), + /** + * Represents the 'colleagueRequest.invalidQaa' constant error identifier. + */ + COLLEAGUE_REQ_INVALID_QAA("colleagueRequest.invalidQaa"), + /** + * Represents the 'colleagueRequest.invalidRedirect' constant error + * identifier. + */ + COLLEAGUE_REQ_INVALID_REDIRECT("colleagueRequest.invalidRedirect"), + /** + * Represents the 'colleagueRequest.invalidSAML' constant error identifier. + */ + COLLEAGUE_REQ_INVALID_SAML("colleagueRequest.invalidSAML"), + + /** + * Represents the 'colleaguePVRequest.invalidPVAttrList' constant error identifier. + */ + COLLEAGUE_PV_REQ_INVALID_PV_ATTR_LIST("colleaguePVRequest.invalidPVAttrList"), + + + /** + * Represents the 'cpepsRedirectUrl' constant error identifier. + */ + CPEPS_REDIRECT_URL("cpepsRedirectUrl"), + /** + * Represents the 'spepsRedirectUrl' constant error identifier. + */ + SPEPS_REDIRECT_URL("spepsRedirectUrl"), + /** + * Represents the 'sProviderAction.invCountry' constant error identifier. + */ + SP_ACTION_INV_COUNTRY("sProviderAction.invCountry"), + + /** + * Represents the 'providernameAlias.invalid' constant error identifier. + */ + PROVIDER_ALIAS_INVALID("providernameAlias.invalid"), + + + /** + * Represents the 'cPeps.attrNull' constant error identifier. + */ + CPEPS_ATTR_NULL("cPeps.attrNull"), + + /** + * Represents the 'colleagueResponse.invalidSAML' constant error identifier. + */ + COLLEAGUE_RESP_INVALID_SAML("colleagueResponse.invalidSAML"), + + /** + * Represents the 'citizenNoConsent.mandatory' constant error identifier. + */ + CITIZEN_NO_CONSENT_MANDATORY("citizenNoConsent.mandatory"), + /** + * Represents the 'citizenResponse.mandatory' constant error identifier. + */ + CITIZEN_RESPONSE_MANDATORY("citizenResponse.mandatory"), + /** + * Represents the 'attVerification.mandatory' constant error identifier. + */ + ATT_VERIFICATION_MANDATORY("attVerification.mandatory"), + /** + * Represents the 'attrValue.verification' constant error identifier. + */ + ATTR_VALUE_VERIFICATION("attrValue.verification"), + + /** + * Represents the 'audienceRestrictionError' constant error identifier. + */ + AUDIENCE_RESTRICTION("audienceRestrictionError"), + /** + * Represents the 'auRequestIdError' constant error identifier. + */ + AU_REQUEST_ID("auRequestIdError"), + /** + * Represents the 'domain' constant error identifier. + */ + DOMAIN("domain"), + /** + * Represents the 'hash.error' constant error identifier. + */ + HASH_ERROR("hash.error"), + /** + * Represents the 'invalidAttributeList' constant error identifier. + */ + INVALID_ATTRIBUTE_LIST("invalidAttributeList"), + /** + * Represents the 'invalidAttributeValue' constant error identifier. + */ + INVALID_ATTRIBUTE_VALUE("invalidAttributeValue"), + /** + * Represents the 'qaaLevel' constant error identifier. + */ + QAALEVEL("qaaLevel"), + /** + * Represents the 'requests' constant error identifier. + */ + REQUESTS("requests"), + /** + * Represents the 'SPSAMLRequest' constant error identifier. + */ + SP_SAML_REQUEST("SPSAMLRequest"), + /** + * Represents the 'spepsSAMLRequest' constant error identifier. + */ + SPEPS_SAML_REQUEST("spepsSAMLRequest"), + /** + * Represents the 'IdPSAMLResponse' constant error identifier. + */ + IDP_SAML_RESPONSE("IdPSAMLResponse"), + /** + * Represents the 'cpepsSAMLResponse' constant error identifier. + */ + CPEPS_SAML_RESPONSE("cpepsSAMLResponse"), + /** + * Represents the 'cpepsSAMLResponse' constant error identifier. + */ + SPEPS_SAML_RESPONSE("spepsSAMLResponse"), + /** + * Represents the 'session' constant error identifier. + */ + SESSION("session"), + /** + * Represents the 'invalid.session' constant error identifier. + */ + INVALID_SESSION("invalid.session"), + /** + * Represents the 'invalid.sessionId' constant error identifier. + */ + INVALID_SESSION_ID("invalid.sessionId"), + /** + * Represents the 'missing.sessionId' constant error identifier. + */ + MISSING_SESSION_ID("sessionError"), + /** + * Represents the 'missing.mandate' constant error identifier. + */ + MISSING_MANDATE("missing.mandate"), + /** + * Represents the 'AtPSAMLResponse' constant error identifier. + */ + ATP_SAML_RESPONSE("AtPSAMLResponse"), + + /** + * Represents the 'AtPSAMLResponse' constant error identifier. + */ + ATP_RESPONSE_ERROR("atp.response.error"), + + /** + * Represents the 'apepsSAMLRequest' constant error identifier. + */ + APEPS_SAML_REQUEST("apepsSAMLRequest"), + + /** + * Represents the 'apepsSAMLResponse' constant error identifier. + */ + APEPS_SAML_RESPONSE("apepsSAMLResponse"), + + /** + * Represents the 'invalid.apepsRedirectUrl' constant error identifier. + */ + INVALID_APEPS_REDIRECT_URL("invalid.apepsRedirectUrl"), + + /** + * Represents the 'invalid.apepsCallbackUrl' constant error identifier. + */ + INVALID_APEPS_CALLBACK_URL("invalid.apepsCallbackUrl"), + + /** + * Represents the 'colleagueAttributeRequest.invalidSAML' constant error identifier. + */ + COLLEAGUE_ATTR_REQ_INVALID_SAML("colleagueAttributeRequest.invalidSAML"); + + /** + * Represents the constant's value. + */ + private String error; + + /** + * Solo Constructor. + * + * @param nError The Constant error value. + */ + PEPSErrors(final String nError) { + this.error = nError; + } + + /** + * Construct the errorCode Constant value. + * + * @return The errorCode Constant. + */ + public String errorCode() { + return error + ".code"; + } + + /** + * Construct the errorCode Constant value with the given code text. + * + * @param text the code text to append to the constant. + * + * @return The errorCode Constant for the given code text. + */ + public String errorCode(final String text) { + return error + "." + text + ".code"; + } + + /** + * Construct the errorMessage constant value. + * + * @return The errorMessage constant. + */ + public String errorMessage() { + return error + ".message"; + } + + /** + * Construct the errorMessage Constant value with the given message text. + * + * @param text the message text to append to the constant. + * + * @return The errorMessage Constant for the given text. + */ + public String errorMessage(final String text) { + return error + "." + text + ".message"; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + return error; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSParameters.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSParameters.java.svn-base new file mode 100644 index 000000000..15c2ae552 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSParameters.java.svn-base @@ -0,0 +1,625 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the STORK PEPS, Commons and Specific Parameters. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2011-07-07 20:48:45 $ + */ +public enum PEPSParameters { + + /** + * Represents the 'apId' parameter constant. + */ + AP_ID("apId"), + /** + * Represents the 'apUrl' parameter constant. + */ + AP_URL("apUrl"), + /** + * Represents the 'ap.number' parameter constant. + */ + AP_NUMBER("ap.number"), + + /** + * Represents the 'assertionConsumerServiceURL' parameter constant. + */ + ASSERTION_CONSUMER_S_URL("assertionConsumerServiceURL"), + + /** + * Represents the 'auth' parameter constant. + */ + AUTHENTICATION("auth"), + + /** + * Represents the 'attr' parameter constant. + */ + ATTRIBUTE("attr"), + /** + * Represents the 'attrName' parameter constant. + */ + ATTRIBUTE_NAME("attrName"), + /** + * Represents the 'attrStatus' parameter constant. + */ + ATTRIBUTE_STATUS("attrStatus"), + /** + * Represents the 'attrType' parameter constant. + */ + ATTRIBUTE_TYPE("attrType"), + /** + * Represents the 'attrValue' parameter constant. + */ + ATTRIBUTE_VALUE("attrValue"), + /** + * Represents the 'attrList' parameter constant. + */ + ATTRIBUTE_LIST("attrList"), + /** + * Represents the 'apMandAttrList' parameter constant. + */ + AP_MANDATORY_ATTRIBUTE_LIST("apMandAttrList"), + /** + * Represents the 'attrTuple' parameter constant. + */ + ATTRIBUTE_TUPLE("attrTuple"), + /** + * Represents the 'attribute-missing' parameter constant. + */ + ATTRIBUTE_MISSING("attribute-missing"), + /** + * Represents the 'attributesNotAllowed' parameter constant. + */ + ATTRIBUTES_NOT_ALLOWED("attributesNotAllowed"), + /** + * Represents the 'authnRequest' parameter constant. + */ + AUTH_REQUEST("authnRequest"), + + /** + * Represents the 'attrValue.number' parameter constant. + */ + ATTR_VALUE_NUMBER("attrValue.number"), + + /** + * Represents the 'derivation.date.format' parameter constant. + */ + DERIVATION_DATE_FORMAT("derivation.date.format"), + /** + * Represents the 'deriveAttr.number' parameter constant. + */ + DERIVE_ATTRIBUTE_NUMBER("deriveAttr.number"), + + /** + * Represents the complex attributes parameter constant. + */ + COMPLEX_ADDRESS_VALUE("canonicalResidenceAddress"), + COMPLEX_NEWATTRIBUTE_VALUE("newAttribute2"), + COMPLEX_HASDEGREE_VALUE("hasDegree"), + COMPLEX_MANDATECONTENT_VALUE("mandateContent"), + /** + * Represents the 'consent-type' parameter constant. + */ + CONSENT_TYPE("consent-type"), + /** + * Represents the 'consent-value' parameter constant. + */ + CONSENT_VALUE("consent-value"), + /** + * Represents the 'country' parameter constant. + */ + COUNTRY("country"), + /** + * Represents the 'countryOrigin' parameter constant. + */ + COUNTRY_ORIGIN("countryOrigin"), + + /** + * Represents the 'cpepsURL' parameter constant. + */ + CPEPS_URL("cpepsURL"), + /** + * Represents the 'callback' parameter constant. + */ + CPEPS_CALLBACK("callback"), + /** + * Represents the 'peps.specificidpredirect.url' parameter constant. + */ + CPEPS_IDP_CALLBACK_VALUE("peps.specificidpredirect.url"), + /** + * Represents the 'peps.specificapredirect.url' parameter constant. + */ + CPEPS_AP_CALLBACK_VALUE("peps.specificapredirect.url"), + + /** + * Represents the 'errorCode' parameter constant. + */ + ERROR_CODE("errorCode"), + /** + * Represents the 'subCode' parameter constant. + */ + ERROR_SUBCODE("subCode"), + /** + * Represents the 'errorMessage' parameter constant. + */ + ERROR_MESSAGE("errorMessage"), + /** + * Represents the 'errorRedirectUrl' parameter constant. + */ + ERROR_REDIRECT_URL("errorRedirectUrl"), + + /** + * errorRedirectUrl Represents the 'external-authentication' parameter + * constant. + */ + EXTERNAL_AUTH("external-authentication"), + /** + * Represents the 'external-ap' parameter constant. + */ + EXTERNAL_AP("external-ap"), + /** + * Represents the 'external-pv' parameter constant. + */ + EXTERNAL_PV("external-pv"), + /** + * Represents the 'external-sig-module' parameter constant. + */ + EXT_SIG_CREATOR_MOD("external-sig-module"), + + /** + * Represents the 'http-x-forwarded-for' parameter constant. + */ + HTTP_X_FORWARDED_FOR("http-x-forwarded-for"), + + /** + * Represents the 'idp.url' parameter constant. + */ + IDP_URL("idp.url"), + /** + * Represents the 'internal-authentication' parameter constant. + */ + INTERNAL_AUTH("internal-authentication"), + /** + * Represents the 'internal-ap' parameter constant. + */ + INTERNAL_AP("internal-ap"), + /** + * Represents the 'internal-pv' parameter constant. + */ + INTERNAL_PV("internal-pv"), + + /** + * Represents the 'samlIssuer' parameter constant. + */ + ISSUER("samlIssuer"), + /** + * Represents the 'samlIssuer.idp' parameter constant. + */ + ISSUER_IDP("samlIssuer.idp"), + /** + * Represents the 'samlIssuer.atp' parameter constant. + */ + ISSUER_ATP("samlIssuer.atp"), + + /** + * Represents the 'mandatory' parameter constant. + */ + MANDATORY("mandatory"), + /** + * Represents the 'mandatoryAttributeMissing' parameter constant. + */ + MANDATORY_ATTR_MISSING("mandatoryAttributeMissing"), + /** + * Represents the 'mandatoryConsentAttrMissing' parameter constant. + */ + MANDATORY_CONSENT_MISSING("mandatoryConsentAttrMissing"), + /** + * Represents the 'missing-attrs' parameter constant. + */ + MISSING_ATTRS("missing-attrs"), + /** + * Represents the 'no-more-attrs' parameter constant. + */ + NO_MORE_ATTRS("no-more-attrs"), + + /** + * Represents the 'optional' parameter constant. + */ + OPTIONAL("optional"), + + /** + * Represents the 'no-consent-type' parameter constant. + */ + NO_CONSENT_TYPE("no-consent-type"), + /** + * Represents the 'no-consent-value' parameter constant. + */ + NO_CONSENT_VALUE("no-consent-value"), + + /** + * Represents the 'provider.name' parameter constant. + */ + PROVIDER_NAME_VALUE("providerName"), + /** + * Represents the 'cpeps.askconsent' parameter constant. + */ + PEPS_ASK_CONSENT("cpeps.askconsent"), + /** + * Represents the 'cpeps.askconsentvalue' parameter constant. + */ + PEPS_ASK_CONSENT_VALUE("cpeps.askconsentvalue"), + /** + * Represents the 'pepsAuth' parameter constant. + */ + PEPS_AUTH_CONSENT("pepsAuth"), + /** + * Represents the 'validation.bypass' parameter constant. + */ + PEPS_BYPASS("validation.bypass"), + /** + * Represents the 'cpeps.number' parameter constant. + */ + PEPS_NUMBER("cpeps.number"), + /** + * Represents the 'cpeps.specificapredirect.url' parameter constant. + */ + PEPS_SPECIFIC_URL("cpeps.specificapredirect.url"), + /** + * Represents the 'pv.url' parameter constant. + */ + PV_URL("pv.url"), + + /** + * Represents the 'qaaLevel' parameter constant. + */ + QAALEVEL("qaaLevel"), + + /** + * Represents the 'speps.redirectUrl' parameter constant. + */ + SPEPS_REDIRECT_URL("speps.redirectUrl"), + + /** + * Represents the 'sp.redirectUrl' parameter constant. + */ + SP_REDIRECT_URL("sp.redirectUrl"), + /** + * Represents the 'cpeps.redirectUrl' parameter constant. + */ + CPEPS_REDIRECT_URL("cpeps.redirectUrl"), + /** + * Represents the 'RelayState' parameter constant. + */ + RELAY_STATE("RelayState"), + /** + * Represents the 'remoteAddr' parameter constant. + */ + REMOTE_ADDR("remoteAddr"), + /** + * Represents the 'remoteUser' parameter constant. + */ + REMOTE_USER("remoteUser"), + + /** + * Represents the 'SAMLRequest' parameter constant. + */ + SAML_REQUEST("SAMLRequest"), + /** + * Represents the 'SAMLResponse' parameter constant. + */ + SAML_RESPONSE("SAMLResponse"), + /** + * Represents the 'SAMLFail' parameter constant. + */ + SAML_TOKEN_FAIL("SAMLFail"), + /** + * Represents the 'TokenId' parameter constant. + */ + SAML_TOKEN_ID("TokenId"), + /** + * Represents the 'inResponseTo' parameter constant. + */ + SAML_IN_RESPONSE_TO("inResponseTo"), + /** + * Represents the 'inResponseTo.idp' parameter constant. + */ + SAML_IN_RESPONSE_TO_IDP("inResponseTo.idp"), + /** + * Represents the 'inResponseTo.atp' parameter constant. + */ + SAML_IN_RESPONSE_TO_ATP("inResponseTo.atp"), + /** + * Represents the 'SignatureResponse' parameter constant. + */ + SIGNATURE_RESPONSE("SignatureResponse"), + + /** + * Represents the 'cPepsSession' parameter constant. + */ + SESSION_ID_URL("cPepsSession"), + /** + * Represents the 'spId' parameter constant. + */ + SP_ID("spId"), + /** + * Represents the 'spQaaLevel' parameter constant. + */ + SP_QAALEVEL("spQaaLevel"), + /** + * Represents the 'spUrl' parameter constant. + */ + SP_URL("spUrl"), + + /** + * Represents the 'allow.derivation.all' parameter constant. + */ + SPECIFIC_ALLOW_DERIVATION_ALL("allow.derivation.all"), + /** + * Represents the ''allow.unknowns parameter constant. + */ + SPECIFIC_ALLOW_UNKNOWNS("allow.unknowns"), + /** + * Represents the 'derivation.date.separator' parameter constant. + */ + SPECIFIC_DERIVATION_DATE_SEP("derivation.date.separator"), + /** + * Represents the 'derivation.month.position' parameter constant. + */ + SPECIFIC_DERIVATION_MONTH_POS("derivation.month.position"), + /** + * Represents the 'derivation.day.position' parameter constant. + */ + SPECIFIC_DERIVATION_DAY_POS("derivation.day.position"), + /** + * Represents the 'derivation.year.position' parameter constant. + */ + SPECIFIC_DERIVATION_YEAR_POS("derivation.year.position"), + + /** + * sp.authorized.parameters Represents the '' parameter constant. + */ + SPEPS_AUTHORIZED("sp.authorized.parameters"), + + /** + * Represents the 'spSector' constant value. + */ + SPSECTOR("spSector"), + /** + * Represents the 'spApplication' constant value. + */ + SPAPPLICATION("spApplication"), + /** + * Represents the 'spCountry' constant value. + */ + SPCOUNTRY("spCountry"), + /** + * Represents the 'spInstitution' constant value. + */ + SPINSTITUTION("spInstitution"), + /** + * Represents the 'storkAttribute.number' parameter constant. + */ + STORK_ATTRIBUTE_NUMBER("storkAttribute.number"), + /** + * Represents the 'storkAttributeValue.number' parameter constant. + */ + STORK_ATTRIBUTE_VALUE_NUMBER("storkAttributeValue.number"), + + /** + * Represents the 'username' parameter constant. + */ + USERNAME("username"), + + /** + * Represents the 'tooManyParameters' parameter constant. + */ + TOO_MANY_PARAMETERS("tooManyParameters"), + /** + * Represents the 'validation.active' parameter constant. + */ + VALIDATION_ACTIVE("validation.active"), + + /** + * Represents the 'x-forwarded-for' parameter constant. + */ + X_FORWARDED_FOR("x-forwarded-for"), + /** + * Represents the 'x-forwarded-host' parameter constant. + */ + X_FORWARDED_HOST("x-forwarded-host"), + /** + * Represents the 'XMLResponse' parameter constant. + */ + XML_RESPONSE("XMLResponse"), + + /** + * Represents the 'ap-cpeps.number' parameter constant. + */ + AP_PEPS_NUMBER("ap-cpeps.number"), + + /** + * Represents the 'atp.number' parameter constant. + */ + ATTRIBUTE_PROVIDER_NUMBER("atp.number"), + + /** + * Represents the 'atn.number' parameter constant. + */ + ATTRIBUTE_NAME_NUMBER("atn.number"), + + /** + * Represents the 'apLinker' parameter constant. + */ + AP_LINKER("apLinker"), + + /** + * Represents the 'prevApLinker' parameter constant. + */ + PREV_AP_LINKER("prevApLinker"), + + /** + * Represents the 'NOSEL' parameter constant (no attribute provider selected). + */ + AP_NO_SELECTION("NOSEL"), + + /** + * Represents the 'OCSEL' parameter constant (attribute provider in another country). + */ + AP_OTHER_COUNTRY("OCSEL"), + + /** + * Represents the '_provider' suffix parameter constant. + */ + AP_PROVIDER_SELECT_SUFFIX("_provider"), + + /** + * Represents the '_country' suffix parameter constant. + */ + AP_COUNTRY_SELECT_SUFFIX("_country"), + + /** + * Represents the '_name' suffix parameter constant. + */ + AP_NAME_SELECT_SUFFIX("_name"), + + /** + * Represents the 'next-ap' parameter constant. + */ + NEXT_AP("next-ap"), + + /** + * Represents the 'next-apeps' parameter constant. + */ + NEXT_APEPS("next-apeps"), + + /** + * Represents the 'back-to-apeps' parameter constant. + */ + BACK_TO_APEPS("back-to-apeps"), + + /** + * Represents the 'is-remote-apeps' parameter constant. + */ + IS_REMOTE_APEPS("is-remote-apeps"), + + /** + * Represents the 'more-attributes' parameter constant. + */ + MORE_ATTRIBUTES("more-attributes"), + + /** + * Represents the 'attr-filter.number' parameter constant. + */ + ATTRIBUTES_FILTER_NUMBER("attr-filter.number"), + + /** + * Represents the 'attr-group' parameter constant. + */ + ATTRIBUTE_GROUPS("attr-group"), + + /** + * Represents the 'all' parameter constant for attribute groups. + */ + ATTRIBUTE_GROUPS_ALL("all"), + + /** + * Represents the 'none' parameter constant for attribute groups. + */ + ATTRIBUTE_GROUPS_NONE("none"), + + /** + * Represents the 'atp.url' parameter constant. + */ + ATP_URL("atp.url"), + /** + * Represents the 'apepsURL' parameter constant. + */ + APEPS_URL("apepsUrl"), + + /** + * Represents the 'apepsCountry' parameter constant. + */ + APEPS_COUNTRY("apepsCountry"), + + /** + * Represents the 'apepsAuthRequest' parameter constant. + */ + APEPS_ATTR_REQUEST("apepsAttrRequest"), + + /** + * Represents the 'isApepsRequest' parameter constant. + */ + APEPS_REQUEST_COMPLETE("apeps-request-complete"), + + /** + * Represents the 'apeps.callbackUrl' parameter constant. + */ + APEPS_CALLBACK_URL("apeps.callbackUrl"), + /** + * Represents the 'attrListMand' parameter constant. + */ + ATTR_LIST_MAND("attrListMand"), + + /** + * Represents the 'attrListOpt' parameter constant. + */ + ATTR_LIST_OPT("attrListOpt"), + + /** + * Represents the 'simpleAttrListMand' parameter constant. + */ + SIMPLE_ATTR_LIST_MAND("simpleAttrListMand"), + + /** + * Represents the 'simpleAttrListOpt' parameter constant. + */ + SIMPLE_ATTR_LIST_OPT("simpleAttrListOpt"), + + /** + * Represents the 'complexAttrListMand' parameter constant. + */ + COMPLEX_ATTR_LIST_MAND("complexAttrListMand"), + + /** + * Represents the 'complexAttrListOpt' parameter constant. + */ + COMPLEX_ATTR_LIST_OPT("complexAttrListOpt"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param nValue The Constant value. + */ + PEPSParameters(final String nValue) { + this.value = nValue; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + return value; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSUtil.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSUtil.java.svn-base new file mode 100644 index 000000000..69729c0bb --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSUtil.java.svn-base @@ -0,0 +1,391 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.Properties; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.bouncycastle.crypto.Digest; +import org.bouncycastle.util.encoders.Base64; +import org.bouncycastle.util.encoders.UrlBase64; + +import eu.stork.peps.auth.commons.exceptions.InternalErrorPEPSException; +import eu.stork.peps.auth.commons.exceptions.InvalidParameterPEPSException; + +/** + * This class holds static helper methods. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.75 $, $Date: 2010-11-23 00:05:35 $ + */ +public final class PEPSUtil { + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(PEPSUtil.class.getName()); + + /** + * Configurations object. + */ + private static Properties configs; + + /** + * Max prefix. + */ + private static final String MAX_PARAM_PREFIX = "max."; + + /** + * Code prefix to get error code. + */ + private static final String CODE_PARAM_SUFFIX = ".code"; + + /** + * param's size prefix to get max param size. + */ + private static final String MAX_PARAM_SUFFIX = ".size"; + + /** + * Message prefix to get error message. + */ + private static final String MSG_PARAM_SUFFIX = ".message"; + + /** + * Private constructor. Prevents the class from being instantiated. + */ + private PEPSUtil() { + // empty constructor + } + + /** + * Creates a single instance of this class and sets the properties. + * + * @param nConfigs The set of available configurations. + * + * @return The created PEPSUtil's class. + */ + public static PEPSUtil createInstance(final Properties nConfigs) { + if (nConfigs != null) { + PEPSUtil.configs = nConfigs; + } + return new PEPSUtil(); + } + + /** + * Getter for the Properties. + * + * @return configs The properties value. + */ + public Properties getConfigs() { + return configs; + } + + /** + * Setter for the Properties. + * + * @param nConfigs The new properties value. + */ + public static void setConfigs(final Properties nConfigs) { + if (nConfigs != null) { + PEPSUtil.configs = nConfigs; + } + } + + /** + * Returns the identifier of some configuration given a set of configurations + * and the corresponding configuration key. + * + * @param configKey The key that IDs some configuration. + * + * @return The configuration String value. + */ + public static String getConfig(final String configKey) { + return configs.getProperty(configKey); + } + + /** + * Validates the input paramValue identified by the paramName. + * + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + * + * @return true if the parameter is valid. + */ + public static boolean isValidParameter(final String paramName, + final String paramValue) { + + final String validationParam = + PEPSUtil.getConfig(PEPSParameters.VALIDATION_ACTIVE.toString()); + boolean retVal = true; + + final String paramConf = MAX_PARAM_PREFIX + paramName + MAX_PARAM_SUFFIX; + + if (PEPSValues.TRUE.toString().equals(validationParam)) { + final String paramSizeStr = PEPSUtil.getConfig(paramConf); + // Checking if the parameter size exists and if it's numeric + if (StringUtils.isNumeric(paramSizeStr)) { + final int maxParamSize = Integer.valueOf(paramSizeStr); + if (StringUtils.isEmpty(paramValue) + || paramValue.length() > maxParamSize) { + retVal = false; + LOG.warn("Invalid parameter [" + paramName + "] value " + paramValue); + } + } else { + retVal = false; + LOG.error("Missing " + paramConf + + " configuration in the pepsUtils.properties configuration file"); + } + } + return retVal; + } + + /** + * Validates the Parameter and throws an exception if an error occurs. Throws + * an InvalidParameterPEPSException runtime exception if the parameter is + * invalid. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + */ + public static void validateParameter(final String className, + final String paramName, final Object paramValue) { + + if (paramValue == null) { + PEPSUtil.validateParameter(className, paramName, ""); + } else { + PEPSUtil.validateParameter(className, paramName, paramValue.toString()); + } + } + + /** + * Validates the Parameters and throws an exception if an error occurs. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + */ + public static void validateParameter(final String className, + final String paramName, final String paramValue) { + + PEPSUtil.validateParameter(className, paramName, paramValue, + PEPSUtil.getErrorCode(paramName), PEPSUtil.getErrorMessage(paramName)); + } + + /** + * Validates the Parameters and throws an exception if an error occurs. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + * @param error The PEPSError to get error code and messages from configs. + */ + public static void validateParameter(final String className, + final String paramName, final String paramValue, final PEPSErrors error) { + + PEPSUtil.validateParameter(className, paramName, paramValue, + PEPSUtil.getConfig(error.errorCode()), + PEPSUtil.getConfig(error.errorMessage())); + } + + /** + * Validates the HTTP Parameter and throws an exception if an error occurs. + * Throws an InvalidParameterPEPSException runtime exception if the parameter + * is invalid. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + * @param errorCode The error code to include on the exception. + * @param errorMessage The error message to include on the exception. + */ + public static void validateParameter(final String className, + final String paramName, final String paramValue, final String errorCode, + final String errorMessage) { + + if (!isValidParameter(paramName, paramValue)) { + LOG.warn("Invalid parameter [" + paramName + "] value found at " + + className); + throw new InvalidParameterPEPSException(errorCode, errorMessage); + } + } + + /** + * Getter for the error code of some given error related to the input param. + * + * @param paramName The name of the parameter associated with the error. + * + * @return The code of the error. + */ + private static String getErrorCode(final String paramName) { + return getConfig(paramName + CODE_PARAM_SUFFIX); + } + + /** + * Getter for the error message of some given error related to the input + * parameter. + * + * @param paramName The name of the parameter associated with the message. + * + * @return The message for the error. + */ + private static String getErrorMessage(final String paramName) { + return getConfig(paramName + MSG_PARAM_SUFFIX); + } + + /** + * {@link Base64} encodes the input samlToken parameter. + * + * @param samlToken the SAML Token to be encoded. + * + * @return The Base64 String representing the samlToken. + * + * @see Base64#encode + */ + public static String encodeSAMLToken(final byte[] samlToken) { + try { + return new String(Base64.encode(samlToken), "UTF8"); + } catch (final UnsupportedEncodingException e) { + LOG.error(PEPSErrors.INTERNAL_ERROR.errorMessage(), e); + return null; + } + } + + /** + * Encode samltoken url safe + * @param samlToken the saml token to encode + * @return the bas64 encoded string + */ + public static String encodeSAMLTokenUrlSafe(final byte[] samlToken) { + try { + return new String(UrlBase64.encode(samlToken), "UTF8"); + } catch (final UnsupportedEncodingException e) { + LOG.error(PEPSErrors.INTERNAL_ERROR.errorMessage(), e); + return null; + } + } + + /** + * Decodes the {@link Base64} String input parameter representing a samlToken. + * + * @param samlToken the SAML Token to be decoded. + * + * @return The samlToken decoded bytes. + * + * @see Base64#decode + */ + public static byte[] decodeSAMLToken(final String samlToken) { + return Base64.decode(samlToken); + } + + /** + * Decode URL save base64 saml token + * @param samlToken the SAML toke to decode + * @return The decoded bytes + */ + public static byte[] decodeSAMLTokenUrlSafe(final String samlToken) { + return UrlBase64.decode(samlToken); + } + + /** + * Hashes a SAML token. Throws an InternalErrorPEPSException runtime exception + * if the Cryptographic Engine fails. + * + * @param samlToken the SAML Token to be hashed. + * + * @return byte[] with the hashed SAML Token. + */ + public static byte[] hashPersonalToken(final byte[] samlToken) { + try { + final String className = + PEPSUtil.getConfig(PEPSValues.HASH_DIGEST_CLASS.toString()); + + final Digest digest = + (Digest) Class.forName(className).getConstructor() + .newInstance((Object[]) null); + digest.update(samlToken, 0, samlToken.length); + + final int retLength = digest.getDigestSize(); + final byte[] ret = new byte[retLength]; + + digest.doFinal(ret, 0); + return ret; + + } catch (final Exception e) { + // For all those exceptions that could be thrown, we always log it and + // thrown an InternalErrorPEPSException. + LOG.error(PEPSErrors.HASH_ERROR.errorMessage(), e); + throw new InternalErrorPEPSException( + PEPSUtil.getConfig(PEPSErrors.HASH_ERROR.errorCode()), + PEPSUtil.getConfig(PEPSErrors.HASH_ERROR.errorMessage()), e); + } + } + + /** + * Gets the Stork error code in the error message if exists! + * + * @param errorMessage The message to get the error code if exists; + * + * @return the error code if exists. Returns null otherwise. + */ + public static String getStorkErrorCode(final String errorMessage) { + if (StringUtils.isNotBlank(errorMessage) + && errorMessage.indexOf(PEPSValues.ERROR_MESSAGE_SEP.toString()) >= 0) { + final String[] msgSplitted = + errorMessage.split(PEPSValues.ERROR_MESSAGE_SEP.toString()); + if (msgSplitted.length == 2 && StringUtils.isNumeric(msgSplitted[0])) { + return msgSplitted[0]; + } + } + return null; + } + + /** + * Gets the Stork error message in the saml message if exists! + * + * @param errorMessage The message to get in the saml message if exists; + * + * @return the error message if exists. Returns the original message + * otherwise. + */ + public static String getStorkErrorMessage(final String errorMessage) { + if (StringUtils.isNotBlank(errorMessage) + && errorMessage.indexOf(PEPSValues.ERROR_MESSAGE_SEP.toString()) >= 0) { + final String[] msgSplitted = + errorMessage.split(PEPSValues.ERROR_MESSAGE_SEP.toString()); + if (msgSplitted.length == 2 && StringUtils.isNumeric(msgSplitted[0])) { + return msgSplitted[1]; + } + } + return errorMessage; + } + + /** + * Get inputstream from string + * @param string the string to convert + * @param codePage the codepage of string + * @return an inputstream + * @throws UnsupportedEncodingException + */ + public static InputStream getStream(final String string, final String codePage) throws UnsupportedEncodingException + { + return new ByteArrayInputStream(string.getBytes(codePage)); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSValues.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSValues.java.svn-base new file mode 100644 index 000000000..89cf8fa9b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PEPSValues.java.svn-base @@ -0,0 +1,342 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the value constants. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.17 $, $Date: 2011-07-07 20:48:45 $ + */ +public enum PEPSValues { + + /** + * Represents the 'all' constant value. + */ + ALL("all"), + /** + * Represents the 'none' constant value. + */ + NONE("none"), + /** + * Represents the 'true' constant value. + */ + TRUE("true"), + /** + * Represents the 'false' constant value. + */ + FALSE("false"), + /** + * Represents the empty string constant value. + */ + EMPTY_STRING(""), + + /** + * Represents the ',' separator constant value. + */ + ATTRIBUTE_VALUE_SEP(","), + /** + * Represents the ';' separator constant value. + */ + ATTRIBUTE_SEP(";"), + /** + * Represents the ':' separator constant value. + */ + ATTRIBUTE_TUPLE_SEP(":"), + /** + * Represents the '/' separator constant value. + */ + EID_SEPARATOR("/"), + /** + * Represents the ' - ' separator constant value. + */ + ERROR_MESSAGE_SEP(" - "), + /** + * Represents the '#' parameter constant value. + */ + LOGGER_SEP("#"), + /** + * Represents the 'NOT_AVAILABLE' parameter constant value. + */ + NOT_AVAILABLE("NotAvailable"), + /** + * Represents the ';' parameter constant value. + */ + SPEPS_AUTHORIZED_SEP(";"), + + /** + * Represents the 'ap' constant value. + */ + AP("ap"), + /** + * Represents the 'C-PEPS' constant value. + */ + CPEPS("C-PEPS"), + /** + * Represents the 'cpeps' constant value. + */ + CPEPS_PREFIX("cpeps"), + /** + * Represents the 'peps' constant value. + */ + PEPS("peps"), + /** + * Represents the '-PEPS' constant value. + */ + PEPS_SUFFIX("-PEPS"), + /** + * Represents the 'SP' constant value. + */ + SP("SP"), + /** + * Represents the 'S-PEPS' constant value. + */ + SPEPS("S-PEPS"), + /** + * Represents the 'speps' constant value. + */ + SPEPS_PREFIX("speps"), + /** + * Represents the 'sp.default.parameters' constant value. + */ + DEFAULT("sp.default.parameters"), + /** + * Represents the default saml id constant value. + */ + DEFAULT_SAML_ID("1"), + /** + * Represents the 'hashDigest.className' constant value. + */ + HASH_DIGEST_CLASS("hashDigest.className"), + + /** + * Represents the 'eu.stork.communication.requests' constant value. + */ + STORK_PACKAGE_REQUEST_LOGGER_VALUE("eu.stork.communication.requests"), + /** + * Represents the 'eu.stork.communication.responses' constant value. + */ + STORK_PACKAGE_RESPONSE_LOGGER_VALUE("eu.stork.communication.responses"), + + /** + * Represents the 'S-PEPS receives request from SP' constant value. + */ + SP_REQUEST("S-PEPS receives request from SP"), + /** + * Represents the 'Get Citizen Consent' constant value. + */ + CITIZEN_CONSENT_LOG("Get Citizen Consent"), + /** + * Represents the 'C-PEPS receives request from S-PEPS' constant value. + */ + CPEPS_REQUEST("C-PEPS receives request from S-PEPS"), + /** + * Represents the 'C-PEPS generates response to S-PEPS' constant value. + */ + CPEPS_RESPONSE("C-PEPS generates response to S-PEPS"), + /** + * Represents the 'S-PEPS generates request to C-PEPS' constant value. + */ + SPEPS_REQUEST("S-PEPS generates request to C-PEPS"), + /** + * Represents the 'S-PEPS receives response from C-PEPS' constant value. + */ + SPEPS_RESPONSE("S-PEPS receives response from C-PEPS"), + /** + * Represents the 'S-PEPS generates response to SP' constant value. + */ + SP_RESPONSE("S-PEPS generates response to SP"), + /** + * Represents the 'Success' constant value. + */ + SUCCESS("Success"), + /** + * Represents the December's month number constant value. + */ + LAST_MONTH("12"), + /** + * Represents the yyyyMM constant value. + */ + NO_DAY_DATE_FORMAT("yyyyMM"), + + /** + * Represents the 'attrValue' constant value. + */ + ATTRIBUTE("attrValue"), + /** + * Represents the 'derivedAttr' constant value. + */ + DERIVE_ATTRIBUTE("deriveAttr"), + /** + * Represents the 'storkAttribute' constant value. + */ + STORK_ATTRIBUTE("storkAttribute"), + + /** + * Represents the 'properties' constant value. + */ + PROPERTIES("properties"), + /** + * Represents the 'referer' constant value. + */ + REFERER("referer"), + /** + * Represents the 'host' constant value. + */ + HOST("host"), + /** + * Represents the 'spid' constant value. + */ + SPID("spid"), + /** + * Represents the 'domain' constant value. + */ + DOMAIN("domain"), + /** + * Represents the '.validation' constant value. + */ + VALIDATION_SUFFIX(".validation"), + /** + * Represents the 'jsessionid' constant value. + */ + EQUAL("="), + /** + * Represents the 'HttpOnly' constant value. + */ + HTTP_ONLY("HttpOnly"), + /** + * Represents the 'SET-COOKIE' constant value. + */ + JSSESSION("JSESSIONID"), + /** + * Represents the '=' constant value. + */ + SETCOOKIE("SET-COOKIE"), + /** + * Represents the ';' constant value. + */ + SEMICOLON(";"), + /** + * Represents the ' ' constant value. + */ + SPACE(" "), + /** + * Represents the 'atp' constant value. + */ + APROVIDER_PREFIX("atp"), + /** + * Represents the 'atn' constant value. + */ + ANAME_PREFIX("atn"), + /** + * Represents the 'ap-cpeps' constant value. + */ + AP_CPEPS_PREFIX("ap-cpeps"), + /** + * Represents the 'attr-filter' constant value. + */ + AP_ATTRFILTER_PREFIX("attr-filter"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param val The Constant value. + */ + PEPSValues(final String val) { + + this.value = val; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + + return value; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".id". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String index(final int index) { + + return value + index + ".id"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".value". + * + * @param index the number. + * + * @return The concatenated string value. + */ + public String value(final int index) { + + return value + index + ".value"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".name". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String name(final int index) { + + return value + index + ".name"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".url". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String url(final int index) { + + return value + index + ".url"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".allowedGroups". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String allowedGroups(final int index) { + + return value + index + ".allowedGroups"; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttribute.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttribute.java.svn-base new file mode 100644 index 000000000..5d8281445 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttribute.java.svn-base @@ -0,0 +1,348 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.apache.log4j.Logger; + +import eu.stork.peps.auth.commons.exceptions.InternalErrorPEPSException; + +/** + * This class is a bean used to store the information relative to the + * PersonalAttribute. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.22 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class PersonalAttribute implements Serializable, Cloneable { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 2612951678412632174L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(PersonalAttribute.class + .getName()); + + /** + * Name of the personal attribute. + */ + private String name; + + /** + * Values of the personal attribute. + */ + private List value = new ArrayList(); + + /** + * Type of the personal attribute. + */ + private String type; + + /** + * Complex values of the personal attribute. + */ + private Map complexValue = new ConcurrentHashMap(); + + /** + * Is the personal attribute mandatory? + */ + private transient boolean required; + + /** + * Returned status of the attribute from the IdP. + */ + private String status; + + /** + * Name of the personal attribute. + */ + private String friendlyName; + + /** + * Empty Constructor. + */ + public PersonalAttribute() { + super(); + } + + /** + * PersonalAttribute Constructor for complex values. + * + * @param attrName The attribute name. + * @param attrIsRequired The attribute type value. + * @param attrComplexValue The attribute's value. + * @param attrStatus The attribute's status value. + */ + public PersonalAttribute(final String attrName, final boolean attrIsRequired, + final List attrComplexValue, final String attrStatus) { + this.setName(attrName); + this.setIsRequired(attrIsRequired); + this.setValue(attrComplexValue); + this.setStatus(attrStatus); + } + + /** + * PersonalAttribute Constructor for complex values. + * + * @param attrName The attribute name. + * @param attrIsRequired The attribute type value. + * @param attrComplexValue The attribute's complex value. + * @param attrStatus The attribute's status value. + */ + public PersonalAttribute(final String attrName, final boolean attrIsRequired, + final Map attrComplexValue, final String attrStatus) { + this.setName(attrName); + this.setIsRequired(attrIsRequired); + this.setComplexValue(attrComplexValue); + this.setStatus(attrStatus); + } + + /** + * {@inheritDoc} + */ + @SuppressWarnings("unchecked") + public Object clone() { + + try { + final PersonalAttribute personalAttr = (PersonalAttribute) super.clone(); + personalAttr.setIsRequired(this.isRequired()); + personalAttr.setName(this.getName()); + personalAttr.setStatus(this.getStatus()); + if (!isEmptyValue()) { + final List val = + (List) ((ArrayList) this.getValue()).clone(); + personalAttr.setValue(val); + } + if (!isEmptyComplexValue()) { + final Map complexVal = + (Map) ((HashMap) this + .getComplexValue()).clone(); + personalAttr.setComplexValue(complexVal); + } + return personalAttr; + } catch (final CloneNotSupportedException e) { + // assert false; + LOG.trace("Nothing to do."); + throw new InternalErrorPEPSException( + PEPSUtil.getConfig(PEPSErrors.INTERNAL_ERROR.errorCode()), + PEPSUtil.getConfig(PEPSErrors.INTERNAL_ERROR.errorMessage()), e); + } + } + + /** + * Getter for the required value. + * + * @return The required value. + */ + public boolean isRequired() { + return required; + } + + /** + * Setter for the required value. + * + * @param attrIsRequired this attribute? + */ + public void setIsRequired(final boolean attrIsRequired) { + this.required = attrIsRequired; + } + + /** + * Getter for the name value. + * + * @return The name value. + */ + public String getName() { + return name; + } + + /** + * Setter for the name value. + * + * @param attrName The personal attribute name. + */ + public void setName(final String attrName) { + this.name = attrName; + } + + /** + * Getter for the value. + * + * @return The list of values. + */ + public List getValue() { + return value; + } + + /** + * Setter for the list of values. + * + * @param attrValue The personal attribute value. + */ + public void setValue(final List attrValue) { + if (attrValue != null) { + this.value = attrValue; + } + } + + + /** + * Getter for the type value. + * + * @return The name value. + */ + public String getType() { + return type; + } + + /** + * Setter for the type value. + * + * @param attrName The personal attribute type. + */ + public void setType(final String attrType) { + this.type = attrType; + } + + /** + * Getter for the status. + * + * @return The status value. + */ + public String getStatus() { + return status; + } + + /** + * Setter for the status value. + * + * @param attrStatus The personal attribute status. + */ + public void setStatus(final String attrStatus) { + this.status = attrStatus; + } + + /** + * Getter for the complex value. + * + * @return The complex value. + */ + public Map getComplexValue() { + return complexValue; + } + + /** + * Setter for the complex value. + * + * @param complexVal The personal attribute Complex value. + */ + public void setComplexValue(final Map complexVal) { + if (complexVal != null) { + this.complexValue = complexVal; + } + } + + /** + * Getter for the personal's friendly name. + * + * @return The personal's friendly name value. + */ + public String getFriendlyName() { + return friendlyName; + } + + /** + * Setter for the personal's friendly name. + * + * @param fName The personal's friendly name. + */ + public void setFriendlyName(final String fName) { + this.friendlyName = fName; + } + + /** + * Return true the value is empty. + * + * @return True if the value is empty "[]"; + */ + public boolean isEmptyValue() { + return value.isEmpty() || (value.size() == 1 && value.get(0).length() == 0); + } + + /** + * Returns true if the Complex Value is empty. + * + * @return True if the Complex Value is empty; + */ + public boolean isEmptyComplexValue() { + return complexValue.isEmpty(); + } + + /** + * Returns true if the Status is empty. + * + * @return True if the Status is empty; + */ + public boolean isEmptyStatus() { + return (status == null || status.length() == 0); + } + + /** + * Prints the PersonalAttribute in the following format. + * name:required:[v,a,l,u,e,s]|[v=a,l=u,e=s]:status; + * + * @return The PersonalAttribute as a string. + */ + public String toString() { + final StringBuilder strBuild = new StringBuilder(); + + AttributeUtil.appendIfNotNull(strBuild, getName()); + strBuild.append(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString()); + AttributeUtil.appendIfNotNull(strBuild, String.valueOf(isRequired())); + strBuild.append(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString()); + strBuild.append('['); + + if (isEmptyValue()) { + if (!isEmptyComplexValue()) { + AttributeUtil.appendIfNotNull(strBuild, AttributeUtil.mapToString( + getComplexValue(), PEPSValues.ATTRIBUTE_VALUE_SEP.toString())); + } + } else { + AttributeUtil.appendIfNotNull( + strBuild, + AttributeUtil.listToString(getValue(), + PEPSValues.ATTRIBUTE_VALUE_SEP.toString())); + } + + strBuild.append(']'); + strBuild.append(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString()); + AttributeUtil.appendIfNotNull(strBuild, getStatus()); + strBuild.append(PEPSValues.ATTRIBUTE_SEP.toString()); + + return strBuild.toString(); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttributeList.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttributeList.java.svn-base new file mode 100644 index 000000000..642b249d4 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/PersonalAttributeList.java.svn-base @@ -0,0 +1,396 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.StringTokenizer; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information relative to the + * PersonalAttributeList. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.27 $, $Date: 2010-11-18 22:54:56 $ + * + * @see PersonalAttribute + */ +@SuppressWarnings("PMD") +public final class PersonalAttributeList extends + ConcurrentHashMap implements IPersonalAttributeList{ + + /** + * Logger object. + */ + private static final Logger LOG = Logger + .getLogger(PersonalAttributeList.class.getName()); + + /** + * Serial id. + */ + private static final long serialVersionUID = 7375127363889975062L; + + /** + * Hash with the latest fetched attribute name alias. + */ + private final transient Map latestAttrAlias = + new HashMap(); + + /** + * Hash with mapping number of alias or the attribute name. + */ + private final transient Map attrAliasNumber = + new HashMap(); + + /** + * Default constructor. + */ + public PersonalAttributeList() { + // The best practices recommend to call the super constructor. + super(); + } + + /** + * Constructor with initial capacity for the PersonalAttributeList size. + * + * @param capacity The initial capacity for the PersonalAttributeList. + */ + public PersonalAttributeList(final int capacity) { + super(capacity); + } + + /** + * {@inheritDoc} + */ + public Iterator iterator() { + return this.values().iterator(); + } + + /** + * {@inheritDoc} + */ + public PersonalAttribute get(final Object key) { + String attrName = (String) key; + + if (this.latestAttrAlias.containsKey(key)) { + attrName = attrName + this.latestAttrAlias.get(key); + } else { + if (this.attrAliasNumber.containsKey(key)) { + this.latestAttrAlias.put(attrName, this.attrAliasNumber.get(key)); + } + } + return super.get(attrName); + } + + /** + * {@inheritDoc} + */ + public void add(final PersonalAttribute value) { + if (value != null) { + this.put(value.getName(), value); + } + } + + /** + * {@inheritDoc} + */ + public PersonalAttribute put(final String key, final PersonalAttribute val) { + if (StringUtils.isNotEmpty(key) && val != null) { + // Validate if attribute name already exists! + String attrAlias = key; + if (this.containsKey(attrAlias)) { + //TODO isAgeOver should not be hardcoded, a better way of handling multipe isAgeOver requests should be implemented. + if (!val.isEmptyValue() && StringUtils.isNumeric(val.getValue().get(0)) && "isAgeOver".equals( val.getName() ) ) { + final String attrValue = val.getValue().get(0); + attrAlias = key + attrValue; + this.attrAliasNumber.put(key, Integer.valueOf(attrValue)); + } else { + final PersonalAttribute attr = super.get(key); + if (!attr.isEmptyValue() + && StringUtils.isNumeric(attr.getValue().get(0))) { + attrAlias = key + attr.getValue().get(0); + super.put(key, (PersonalAttribute) attr); + this.attrAliasNumber.put(key, null); + } + } + } + return super.put(attrAlias, val); + } else { + return null; + } + } + + /** + * {@inheritDoc} + */ + public void populate(final String attrList) { + final StringTokenizer strToken = + new StringTokenizer(attrList, PEPSValues.ATTRIBUTE_SEP.toString()); + + while (strToken.hasMoreTokens()) { + final PersonalAttribute persAttr = new PersonalAttribute(); + String[] tuples = + strToken.nextToken().split(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString(), + AttributeConstants.NUMBER_TUPLES.intValue()); + + // Convert to the new format if needed! + tuples = convertFormat(tuples); + + if (AttributeUtil.hasValidTuples(tuples)) { + final int attrValueIndex = + AttributeConstants.ATTR_VALUE_INDEX.intValue(); + final String tmpAttrValue = + tuples[attrValueIndex].substring(1, + tuples[attrValueIndex].length() - 1); + final String[] vals = + tmpAttrValue.split(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + persAttr.setName(tuples[AttributeConstants.ATTR_NAME_INDEX.intValue()]); + persAttr.setIsRequired(Boolean + .valueOf(tuples[AttributeConstants.ATTR_TYPE_INDEX.intValue()])); + + // check if it is a complex value + if (isComplexValue(vals)) { + persAttr.setComplexValue(createComplexValue(vals)); + } + else + { + persAttr.setValue(createValues(vals)); + } + + if (tuples.length == AttributeConstants.NUMBER_TUPLES.intValue()) { + persAttr.setStatus(tuples[AttributeConstants.ATTR_STATUS_INDEX + .intValue()]); + } + this.put(tuples[AttributeConstants.ATTR_NAME_INDEX.intValue()], + persAttr); + + } else { + LOG.warn("Invalid personal attribute list tuples"); + } + + } + } + + /** + * Returns a copy of this IPersonalAttributeList instance. + * + * @return The copy of this IPersonalAttributeList. + */ + public Object clone() { + try { + return (PersonalAttributeList) super.clone(); + } catch (CloneNotSupportedException e) { + return null; + } + } + + /** + * Creates a string in the following format. + * + * attrName:attrType:[attrValue1,attrValue2=attrComplexValue]:attrStatus; + * + * @return {@inheritDoc} + */ + @Override + public String toString() { + final Iterator> itAttrs = + this.entrySet().iterator(); + final StringBuilder strBuilder = new StringBuilder(); + + while (itAttrs.hasNext()) { + final Entry attrEntry = itAttrs.next(); + final PersonalAttribute attr = attrEntry.getValue(); + //strBuilder.append(attr.toString()); + strBuilder.insert(0, attr.toString()); + } + + return strBuilder.toString(); + } + + /** + * Validates and creates the attribute's complex values. + * + * @param values The complex values. + * + * @return The {@link Map} with the complex values. + * + * @see Map + */ + private Map createComplexValue(final String[] values) { + final Map complexValue = new HashMap(); + for (final String val : values) { + final String[] tVal = val.split("="); + if (StringUtils.isNotEmpty(val) && tVal.length == 2) { + complexValue.put(tVal[0], AttributeUtil.unescape(tVal[1])); + } + } + return complexValue; + } + + /** + * Checks if value is complex or not + * @param values The values to check + * @return True if succesful + */ + private boolean isComplexValue(final String[] values) { + boolean isComplex = false; + if (values.length > 0) { + final String[] tVal = values[0].split("="); + if (StringUtils.isNotEmpty(values[0]) && tVal.length == 2) { + isComplex = true; + } + } + return isComplex; + } + + /** + * Validates and creates the attribute values. + * + * @param vals The attribute values. + * + * @return The {@link List} with the attribute values. + * + * @see List + */ + private List createValues(final String[] vals) { + final List values = new ArrayList(); + for (final String val : vals) { + if (StringUtils.isNotEmpty(val)) { + values.add(AttributeUtil.unescape(val)); + } + } + return values; + } + + /** + * Converts the attribute tuple (attrName:attrType...) to the new format. + * + * @param tuples The attribute tuples to convert. + * + * @return The attribute tuples in the new format. + */ + private String[] convertFormat(final String[] tuples) { + final String[] newFormatTuples = + new String[AttributeConstants.NUMBER_TUPLES.intValue()]; + if (tuples != null) { + System.arraycopy(tuples, 0, newFormatTuples, 0, tuples.length); + + for (int i = tuples.length; i < newFormatTuples.length; i++) { + if (i == AttributeConstants.ATTR_VALUE_INDEX.intValue()) { + newFormatTuples[i] = "[]"; + } else { + newFormatTuples[i] = ""; + } + } + } + return newFormatTuples; + } + + /** + * Returns a IPersonalAttributeList of the complex attributes in this map. + * + * @return an IPersonalAttributeList of the complex attributes contained in this map. + */ + public IPersonalAttributeList getComplexAttributes() { + LOG.info("get complex attributes"); + IPersonalAttributeList attrList = new PersonalAttributeList(); + for(PersonalAttribute attr: this) { + if(!attr.getComplexValue().isEmpty()) { + attrList.put(attr.getName(), attr); + LOG.info("adding complex attribute:"+attr.getName()); + } + } + return attrList; + } + + /** + * Returns a IPersonalAttributeList of the mandatory attributes in this map. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map. + */ + public IPersonalAttributeList getSimpleValueAttributes() { + LOG.info("get simple attributes"); + IPersonalAttributeList attrList = new PersonalAttributeList(); + for(PersonalAttribute attr: this) { + if(attr.getComplexValue().isEmpty()) { + attrList.put(attr.getName(), attr); + LOG.info("adding simple attribute:"+attr.getName()); + } + } + return attrList; + } + + + + /** + * Returns a IPersonalAttributeList of the mandatory attributes in this map. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map. + */ + public IPersonalAttributeList getMandatoryAttributes() { + return getAttributesByParam(true); + } + + + /** + * Returns a IPersonalAttributeList of the attributes in this map by parameter value. + * + * @param compareValue The boolean to get mandatory (true) or optional (false) attributes. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map if compareValue is true or optional otherwise. + */ + private IPersonalAttributeList getAttributesByParam(final boolean compareValue) { + LOG.info("get attributes by param :"+compareValue); + IPersonalAttributeList attrList = new PersonalAttributeList(); + for(PersonalAttribute attr: this) { + if(attr.isRequired() == compareValue) { + attrList.put(attr.getName(), attr); + LOG.info("adding attribute:"+attr.getName()); + } + } + return attrList; + } + + + /** + * Returns a IPersonalAttributeList of the optional attributes in this map. + * + * @return an IPersonalAttributeList of the optional attributes contained in this map. + */ + public IPersonalAttributeList getOptionalAttributes() { + return getAttributesByParam(false); + } + + /** + * {@inheritDoc} + */ + public boolean hasMissingValues() { + for(PersonalAttribute attr: this) { + if(attr.isEmptyValue() && attr.isEmptyComplexValue()) { + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryRequest.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryRequest.java.svn-base new file mode 100644 index 000000000..65936f1a8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryRequest.java.svn-base @@ -0,0 +1,447 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +import org.apache.log4j.Logger; + +public class STORKAttrQueryRequest implements Serializable, Cloneable { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 4778480781609392750L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAttrQueryRequest.class + .getName()); + + /** The samlId. */ + private String samlId; + + /** The destination. */ + private String destination; + + /** The assertion consumer service url. */ + private String serviceURL; + + /** The distinguished name. */ + private String distinguishedName; + + /** The e id sector share. */ + private boolean eIDSectorShare; + + /** The e id cross sector share. */ + private boolean eIDCrossSectorShare; + + /** The e id cross border share. */ + private boolean eIDCrossBorderShare; + + /** The personal attribute list. */ + private IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** The qaa. */ + private int qaa; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The service provider sector. */ + private String spSector; + + /** The service provider institution. */ + private String spInstitution; + + /** The service provider application. */ + private String spApplication; + + /** The service provider country. */ + private String spCountry; + + /** The country. */ + private String country; + + /** The citizen country code. */ + private String citizenCountry; + + /** The Service Provider ID. */ + private String sPID; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the SP ID. + * + * @return sPID The SP ID. + */ + public String getSPID() { + return sPID; + } + + /** + * Sets the SP ID. + * + * @param sPId The new sp samlId. + */ + public void setSPID(final String sPId) { + this.sPID = sPId; + } + + /** + * Gets the citizen country code. + * + * @return The citizen country code value. + */ + public String getCitizenCountryCode() { + return citizenCountry; + } + + /** + * Sets the citizen country code. + * + * @param countryCode the new citizen country code value. + */ + public void setCitizenCountryCode(final String countryCode) { + this.citizenCountry = countryCode; + } + + /** + * Gets the sp country. + * + * @return The sp country value. + */ + public String getSpCountry() { + return spCountry; + } + + /** + * Sets the sp country. + * + * @param sPCountry the new sp country value. + */ + public void setSpCountry(final String sPCountry) { + this.spCountry = sPCountry; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the qaa value. + * + * @return The qaa value value. + */ + public int getQaa() { + return qaa; + } + + /** + * Setter for the qaa value. + * + * @param qaaLevel The new qaa value. + */ + public void setQaa(final int qaaLevel) { + this.qaa = qaaLevel; + } + + /** + * Getter for the serviceURL value. + * + * @return The serviceURL value. + */ + public String getAssertionConsumerServiceURL() { + return serviceURL; + } + + /** + * Setter for the serviceURL value. + * + * @param newServiceURL the assertion consumer service URL. + */ + public void setAssertionConsumerServiceURL(final String newServiceURL) { + this.serviceURL = newServiceURL; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + + /** + * Getter for the attributeList value. + * + * @return The attributeList value. + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the attributeList value. + * + * @param attrList the personal attribute list value. + * + * @see IPersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + /** + * Gets the service provider sector. + * + * @return The service provider sector value. + */ + public String getSpSector() { + return spSector; + } + + /** + * Sets the service provider sector. + * + * @param samlSPSector the new service provider sector value. + */ + public void setSpSector(final String samlSPSector) { + this.spSector = samlSPSector; + } + + /** + * Gets the service provider institution. + * + * @return The service provider institution value. + */ + public String getSpInstitution() { + return spInstitution; + } + + /** + * Sets the service provider institution. + * + * @param samlSPInst the new service provider institution value. + */ + public void setSpInstitution(final String samlSPInst) { + this.spInstitution = samlSPInst; + } + + /** + * Gets the service provider application. + * + * @return The service provider application value. + */ + public String getSpApplication() { + return spApplication; + } + + /** + * Sets the service provider application. + * + * @param samlSPApp the new service provider application value. + */ + public void setSpApplication(final String samlSPApp) { + this.spApplication = samlSPApp; + } + + /** + * Checks if is eId sector share. + * + * @return true, if is eId sector share. + */ + public boolean isEIDSectorShare() { + return eIDSectorShare; + } + + /** + * Sets the eId sector share. + * + * @param eIdSectorShare the new eId sector share value. + */ + public void setEIDSectorShare(final boolean eIdSectorShare) { + this.eIDSectorShare = eIdSectorShare; + } + + /** + * Checks if is eId cross sector share. + * + * @return true, if is eId cross sector share. + */ + public boolean isEIDCrossSectorShare() { + return eIDCrossSectorShare; + } + + /** + * Sets the eId cross sector share. + * + * @param eIdCrossSectorShare the new eId cross sector share value. + */ + public void setEIDCrossSectorShare(final boolean eIdCrossSectorShare) { + this.eIDCrossSectorShare = eIdCrossSectorShare; + } + + /** + * Checks if is eId cross border share. + * + * @return true, if is eId cross border share. + */ + public boolean isEIDCrossBorderShare() { + return eIDCrossBorderShare; + } + + /** + * Sets the eId cross border share. + * + * @param eIdCrossBorderShare the new eId cross border share value. + */ + public void setEIDCrossBorderShare(final boolean eIdCrossBorderShare) { + this.eIDCrossBorderShare = eIdCrossBorderShare; + } + + /** + * Returns a copy of this STORKAttrQueryRequest instance. + * + * @return The copy of this STORKAttrQueryRequest. + * @throws CloneNotSupportedException on clone exception + */ + @Override + public Object clone() throws CloneNotSupportedException{ + STORKAttrQueryRequest storkAttrQueryReq = null; + storkAttrQueryReq = (STORKAttrQueryRequest) super.clone(); + storkAttrQueryReq.setPersonalAttributeList(getPersonalAttributeList()); + storkAttrQueryReq.setTokenSaml(getTokenSaml()); + return storkAttrQueryReq; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryResponse.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryResponse.java.svn-base new file mode 100644 index 000000000..4e40d6d01 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAttrQueryResponse.java.svn-base @@ -0,0 +1,388 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.opensaml.saml2.core.Assertion; + +public class STORKAttrQueryResponse { + + /** Response Id. */ + private String samlId; + + /** Request failed? */ + private boolean fail; + + /** Status code. */ + private String statusCode; + + /** Secondary status code. */ + private String subStatusCode; + + /** Audience restriction. */ + private transient String audienceRest; + + /** Error message. */ + private String message; + + /** Id of the request that originated this response. */ + private String inResponseTo; + + /** Expiration date. */ + private DateTime notOnOrAfter; + + /** Creation date. */ + private DateTime notBefore; + + /** The SAML token. */ + private byte[] tokenSaml = new byte[0]; + + /** Country. */ + private String country; + + /** The complete assertion **/ + private Assertion assertion; + + /** List of all assertions in response **/ + private List assertions; + + /** The complete list from all assertions **/ + private transient IPersonalAttributeList totalAttributeList = new PersonalAttributeList(); + + /** All personal attribute lists **/ + private List attributeLists; + + /** Citizen's personal attribute list. */ + private transient IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAttrQueryResponse.class.getName()); + + /** + * Getter for the subStatusCode. + * + * @return The subStatusCode value. + */ + public String getSubStatusCode() { + return subStatusCode; + } + + /** + * Setter for the subStatusCode. + * + * @param samlSubStatusCode the new subStatusCode value. + */ + public void setSubStatusCode(final String samlSubStatusCode) { + this.subStatusCode = samlSubStatusCode; + } + + /** + * Getter for audienceRest. + * + * @return The audienceRest value. + */ + public String getAudienceRestriction() { + return audienceRest; + } + + /** + * Setter for audienceRest. + * + * @param audRest the new audienceRest value. + */ + public void setAudienceRestriction(final String audRest) { + this.audienceRest = audRest; + } + + /** + * Getter for the samlToken. + * + * @return The samlToken value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Setter for samlToken. + * + * @param samlToken the new tokenSaml value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Getter for the country name. + * + * @return The country name value. + */ + public String getCountry() { + return country; + } + + /** + * Setter for the country name. + * + * @param cCountry the new country name value. + */ + public void setCountry(final String cCountry) { + this.country = cCountry; + } + + /** + * Getter for pal value. + * + * @return The pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the inResponseTo value. + * + * @return The inResponseTo value. + */ + public String getInResponseTo() { + return inResponseTo; + } + + /** + * Setter for the inResponseTo value. + * + * @param samlInResponseTo the new inResponseTo value. + */ + public void setInResponseTo(final String samlInResponseTo) { + this.inResponseTo = samlInResponseTo; + } + + /** + * Getter for the fail value. + * + * @return The fail value. + */ + public boolean isFail() { + return fail; + } + + /** + * Setter for the fail value. + * + * @param failVal the new fail value. + */ + public void setFail(final boolean failVal) { + this.fail = failVal; + } + + /** + * Getter for the message value. + * + * @return The message value. + */ + public String getMessage() { + return message; + } + + /** + * Setter for the message value. + * + * @param msg the new message value. + */ + public void setMessage(final String msg) { + this.message = msg; + } + + /** + * Getter for the statusCode value. + * + * @return The statusCode value. + */ + public String getStatusCode() { + return statusCode; + } + + /** + * Setter for the statusCode value. + * + * @param status the new statusCode value. + */ + public void setStatusCode(final String status) { + this.statusCode = status; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param nSamlId the new samlId value. + */ + public void setSamlId(final String nSamlId) { + this.samlId = nSamlId; + } + + /** + * Getter for the notOnOrAfter value. + * + * @return The notOnOrAfter value. + * + * @see DateTime + */ + public DateTime getNotOnOrAfter() { + return this.notOnOrAfter; + } + + /** + * Setter for the notOnOrAfter value. + * + * @param nOnOrAfter the new notOnOrAfter value. + * + * @see DateTime + */ + public void setNotOnOrAfter(final DateTime nOnOrAfter) { + this.notOnOrAfter = nOnOrAfter; + } + + /** + * Getter for the notBefore value. + * + * @return The notBefore value. + * + * @see DateTime + */ + public DateTime getNotBefore() { + return notBefore; + } + + /** + * Setter for the notBefore value. + * + * @param nBefore the new notBefore value. + * + * @see DateTime + */ + public void setNotBefore(final DateTime nBefore) { + this.notBefore = nBefore; + } + + /** Get the assertion from the response **/ + public Assertion getAssertion() { + return assertion; + } + + /** Set the assertion in the response **/ + public void setAssertion(final Assertion nAssertion) { + this.assertion = nAssertion; + } + + public void setAssertions(List newAssert) { + this.assertions = newAssert; + } + + public List getAssertions() { + return assertions; + } + + /** + * Getter for the toal pal value. + * + * @return The total pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getTotalPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) totalAttributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the total Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setTotalPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.totalAttributeList = attrList; + } + } + + /** + * Getter for personal attribute lists + * + * @return The lists + * + * @see PersonalAttributeList + */ + public List getPersonalAttributeLists() { + return attributeLists; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeLists(final List attrLists) { + if (attrLists != null) { + this.attributeLists = attrLists; + } + } + +} + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnRequest.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnRequest.java.svn-base new file mode 100644 index 000000000..2354d0eb1 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnRequest.java.svn-base @@ -0,0 +1,495 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; + +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information relative to the + * STORKAuthnRequest (SAML Token Request). + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.21 $, $Date: 2011-02-17 22:44:34 $ + */ +public final class STORKAuthnRequest implements Serializable, Cloneable { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 4778480781609392750L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAuthnRequest.class + .getName()); + + /** The samlId. */ + private String samlId; + + /** The assertion consumer service url. */ + private String serviceURL; + + /** The destination. */ + private String destination; + + /** The provider name. */ + private String providerName; + + /** The distinguished name. */ + private String distinguishedName; + + /** The e id sector share. */ + private boolean eIDSectorShare; + + /** The e id cross sector share. */ + private boolean eIDCrossSectorShare; + + /** The e id cross border share. */ + private boolean eIDCrossBorderShare; + + /** The personal attribute list. */ + private IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** The qaa. */ + private int qaa; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The service provider sector. */ + private String spSector; + + /** The service provider institution. */ + private String spInstitution; + + /** The service provider application. */ + private String spApplication; + + /** The service provider country. */ + private String spCountry; + + /** The country. */ + private String country; + + /** The citizen country code. */ + private String citizenCountry; + + /** The Service Provider ID. */ + private String sPID; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the SP ID. + * + * @return sPID The SP ID. + */ + public String getSPID() { + return sPID; + } + + /** + * Sets the SP ID. + * + * @param sPId The new sp samlId. + */ + public void setSPID(final String sPId) { + this.sPID = sPId; + } + + /** + * Gets the citizen country code. + * + * @return The citizen country code value. + */ + public String getCitizenCountryCode() { + return citizenCountry; + } + + /** + * Sets the citizen country code. + * + * @param countryCode the new citizen country code value. + */ + public void setCitizenCountryCode(final String countryCode) { + this.citizenCountry = countryCode; + } + + /** + * Gets the sp country. + * + * @return The sp country value. + */ + public String getSpCountry() { + return spCountry; + } + + /** + * Sets the sp country. + * + * @param sPCountry the new sp country value. + */ + public void setSpCountry(final String sPCountry) { + this.spCountry = sPCountry; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the qaa value. + * + * @return The qaa value value. + */ + public int getQaa() { + return qaa; + } + + /** + * Setter for the qaa value. + * + * @param qaaLevel The new qaa value. + */ + public void setQaa(final int qaaLevel) { + this.qaa = qaaLevel; + } + + /** + * Getter for the serviceURL value. + * + * @return The serviceURL value. + */ + public String getAssertionConsumerServiceURL() { + return serviceURL; + } + + /** + * Setter for the serviceURL value. + * + * @param newServiceURL the assertion consumer service URL. + */ + public void setAssertionConsumerServiceURL(final String newServiceURL) { + this.serviceURL = newServiceURL; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + /** + * Getter for the providerName value. + * + * @return The provider name value. + */ + public String getProviderName() { + return providerName; + } + + /** + * Setter for the providerName value. + * + * @param samlProvider the provider name value. + */ + public void setProviderName(final String samlProvider) { + this.providerName = samlProvider; + } + + /** + * Getter for the attributeList value. + * + * @return The attributeList value. + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the attributeList value. + * + * @param attrList the personal attribute list value. + * + * @see IPersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + /** + * Gets the service provider sector. + * + * @return The service provider sector value. + */ + public String getSpSector() { + return spSector; + } + + /** + * Sets the service provider sector. + * + * @param samlSPSector the new service provider sector value. + */ + public void setSpSector(final String samlSPSector) { + this.spSector = samlSPSector; + } + + /** + * Gets the service provider institution. + * + * @return The service provider institution value. + */ + public String getSpInstitution() { + return spInstitution; + } + + /** + * Sets the service provider institution. + * + * @param samlSPInst the new service provider institution value. + */ + public void setSpInstitution(final String samlSPInst) { + this.spInstitution = samlSPInst; + } + + /** + * Gets the service provider application. + * + * @return The service provider application value. + */ + public String getSpApplication() { + return spApplication; + } + + /** + * Sets the service provider application. + * + * @param samlSPApp the new service provider application value. + */ + public void setSpApplication(final String samlSPApp) { + this.spApplication = samlSPApp; + } + + /** + * Checks if is eId sector share. + * + * @return true, if is eId sector share. + */ + public boolean isEIDSectorShare() { + return eIDSectorShare; + } + + /** + * Sets the eId sector share. + * + * @param eIdSectorShare the new eId sector share value. + */ + public void setEIDSectorShare(final boolean eIdSectorShare) { + this.eIDSectorShare = eIdSectorShare; + } + + /** + * Checks if is eId cross sector share. + * + * @return true, if is eId cross sector share. + */ + public boolean isEIDCrossSectorShare() { + return eIDCrossSectorShare; + } + + /** + * Sets the eId cross sector share. + * + * @param eIdCrossSectorShare the new eId cross sector share value. + */ + public void setEIDCrossSectorShare(final boolean eIdCrossSectorShare) { + this.eIDCrossSectorShare = eIdCrossSectorShare; + } + + /** + * Checks if is eId cross border share. + * + * @return true, if is eId cross border share. + */ + public boolean isEIDCrossBorderShare() { + return eIDCrossBorderShare; + } + + /** + * Sets the eId cross border share. + * + * @param eIdCrossBorderShare the new eId cross border share value. + */ + public void setEIDCrossBorderShare(final boolean eIdCrossBorderShare) { + this.eIDCrossBorderShare = eIdCrossBorderShare; + } + + /** + * Returns a copy of this STORKAuthnRequest instance. + * + * @return The copy of this STORKAuthnRequest. + * @throws CloneNotSupportedException on clone exception + */ + @Override + public Object clone() throws CloneNotSupportedException{ + STORKAuthnRequest storkAuthnReq = null; + try { + storkAuthnReq = (STORKAuthnRequest) super.clone(); + storkAuthnReq.setPersonalAttributeList(getPersonalAttributeList()); + storkAuthnReq.setTokenSaml(getTokenSaml()); + } catch (final CloneNotSupportedException e) { + // assert false; + LOG.trace("[PersonalAttribute] Nothing to do."); + } + + return storkAuthnReq; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnResponse.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnResponse.java.svn-base new file mode 100644 index 000000000..84fadd023 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKAuthnResponse.java.svn-base @@ -0,0 +1,383 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.List; + +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.opensaml.saml2.core.Assertion; + +/** + * This class is a bean used to store the information relative to the + * STORKAuthnResponse. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.15 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class STORKAuthnResponse { + + /** Response Id. */ + private String samlId; + + /** Authentication failed? */ + private boolean fail; + + /** Status code. */ + private String statusCode; + + /** Secondary status code. */ + private String subStatusCode; + + /** Audience restriction. */ + private transient String audienceRest; + + /** Error message. */ + private String message; + + /** Id of the request that originated this response. */ + private String inResponseTo; + + /** Expiration date. */ + private DateTime notOnOrAfter; + + /** Creation date. */ + private DateTime notBefore; + + /** The SAML token. */ + private byte[] tokenSaml = new byte[0]; + + /** Country. */ + private String country; + + /** Citizen's personal attribute list. */ + private transient IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** List of all assertions in response **/ + private List assertions; + + /** The complete list from all assertions **/ + private transient IPersonalAttributeList totalAttributeList = new PersonalAttributeList(); + + /** All personal attribute lists **/ + private List attributeLists; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAuthnResponse.class.getName()); + + /** + * Getter for the subStatusCode. + * + * @return The subStatusCode value. + */ + public String getSubStatusCode() { + return subStatusCode; + } + + /** + * Setter for the subStatusCode. + * + * @param samlSubStatusCode the new subStatusCode value. + */ + public void setSubStatusCode(final String samlSubStatusCode) { + this.subStatusCode = samlSubStatusCode; + } + + /** + * Getter for audienceRest. + * + * @return The audienceRest value. + */ + public String getAudienceRestriction() { + return audienceRest; + } + + /** + * Setter for audienceRest. + * + * @param audRest the new audienceRest value. + */ + public void setAudienceRestriction(final String audRest) { + this.audienceRest = audRest; + } + + /** + * Getter for the samlToken. + * + * @return The samlToken value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Setter for samlToken. + * + * @param samlToken the new tokenSaml value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Getter for the country name. + * + * @return The country name value. + */ + public String getCountry() { + return country; + } + + /** + * Setter for the country name. + * + * @param cCountry the new country name value. + */ + public void setCountry(final String cCountry) { + this.country = cCountry; + } + + /** + * Getter for pal value. + * + * @return The pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the inResponseTo value. + * + * @return The inResponseTo value. + */ + public String getInResponseTo() { + return inResponseTo; + } + + /** + * Setter for the inResponseTo value. + * + * @param samlInResponseTo the new inResponseTo value. + */ + public void setInResponseTo(final String samlInResponseTo) { + this.inResponseTo = samlInResponseTo; + } + + /** + * Getter for the fail value. + * + * @return The fail value. + */ + public boolean isFail() { + return fail; + } + + /** + * Setter for the fail value. + * + * @param failVal the new fail value. + */ + public void setFail(final boolean failVal) { + this.fail = failVal; + } + + /** + * Getter for the message value. + * + * @return The message value. + */ + public String getMessage() { + return message; + } + + /** + * Setter for the message value. + * + * @param msg the new message value. + */ + public void setMessage(final String msg) { + this.message = msg; + } + + /** + * Getter for the statusCode value. + * + * @return The statusCode value. + */ + public String getStatusCode() { + return statusCode; + } + + /** + * Setter for the statusCode value. + * + * @param status the new statusCode value. + */ + public void setStatusCode(final String status) { + this.statusCode = status; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param nSamlId the new samlId value. + */ + public void setSamlId(final String nSamlId) { + this.samlId = nSamlId; + } + + /** + * Getter for the notOnOrAfter value. + * + * @return The notOnOrAfter value. + * + * @see DateTime + */ + public DateTime getNotOnOrAfter() { + return this.notOnOrAfter; + } + + /** + * Setter for the notOnOrAfter value. + * + * @param nOnOrAfter the new notOnOrAfter value. + * + * @see DateTime + */ + public void setNotOnOrAfter(final DateTime nOnOrAfter) { + this.notOnOrAfter = nOnOrAfter; + } + + /** + * Getter for the notBefore value. + * + * @return The notBefore value. + * + * @see DateTime + */ + public DateTime getNotBefore() { + return notBefore; + } + + /** + * Setter for the notBefore value. + * + * @param nBefore the new notBefore value. + * + * @see DateTime + */ + public void setNotBefore(final DateTime nBefore) { + this.notBefore = nBefore; + } + + public void setAssertions(List newAssert) { + this.assertions = newAssert; + } + + public List getAssertions() { + return assertions; + } + + /** + * Getter for the toal pal value. + * + * @return The total pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getTotalPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) totalAttributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the total Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setTotalPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.totalAttributeList = attrList; + } + } + + /** + * Getter for personal attribute lists + * + * @return The lists + * + * @see PersonalAttributeList + */ + public List getPersonalAttributeLists() { + return attributeLists; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeLists(final List attrLists) { + if (attrLists != null) { + this.attributeLists = attrLists; + } + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutRequest.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutRequest.java.svn-base new file mode 100644 index 000000000..44811aee2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutRequest.java.svn-base @@ -0,0 +1,197 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +public class STORKLogoutRequest implements Serializable, Cloneable { + private static final long serialVersionUID = 4778480781609392750L; + + /** The samlId. */ + private String samlId; + + /** The destination. */ + private String destination; + + /** The distinguished name. */ + private String distinguishedName; + + /** The qaa. */ + private int qaa; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The country. */ + private String country; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** The ID of principal as known to SP **/ + private String spProvidedId; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the qaa value. + * + * @return The qaa value value. + */ + public int getQaa() { + return qaa; + } + + /** + * Setter for the qaa value. + * + * @param qaaLevel The new qaa value. + */ + public void setQaa(final int qaaLevel) { + this.qaa = qaaLevel; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + /** Getter for spProvidedId **/ + public String getSpProvidedId() { + return spProvidedId; + } + + public void setSpProvidedId(final String nSpProvidedId) { + this.spProvidedId = nSpProvidedId; + } + + @Override + public Object clone() throws CloneNotSupportedException{ + STORKLogoutRequest storkLogoutRequest = null; + storkLogoutRequest = (STORKLogoutRequest) super.clone(); + storkLogoutRequest.setTokenSaml(getTokenSaml()); + return storkLogoutRequest; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutResponse.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutResponse.java.svn-base new file mode 100644 index 000000000..21b53a652 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKLogoutResponse.java.svn-base @@ -0,0 +1,250 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +public class STORKLogoutResponse implements Serializable, Cloneable { + private static final long serialVersionUID = 4778480781609392750L; + + /** The samlId. */ + private String samlId; + + /** The destination. */ + private String destination; + + /** The distinguished name. */ + private String distinguishedName; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The country. */ + private String country; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** Status code. */ + private String statusCode; + + /** Secondary status code. */ + private String subStatusCode; + + /** Status message. */ + private String statusMessage; + + /** Logout failed? */ + private boolean fail; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + + /** + * Getter for the fail value. + * + * @return The fail value. + */ + public boolean isFail() { + return fail; + } + + /** + * Setter for the fail value. + * + * @param failVal the new fail value. + */ + public void setFail(final boolean failVal) { + this.fail = failVal; + } + + /** + * Getter for the statusCode value. + * + * @return The statusCode value. + */ + public String getStatusCode() { + return statusCode; + } + + /** + * Getter for the subStatusCode. + * + * @return The subStatusCode value. + */ + public String getSubStatusCode() { + return subStatusCode; + } + + /** + * Setter for the subStatusCode. + * + * @param samlSubStatusCode the new subStatusCode value. + */ + public void setSubStatusCode(final String samlSubStatusCode) { + this.subStatusCode = samlSubStatusCode; + } + + /** + * Setter for the statusMessage value. + * + * @param status the new statusMessage value. + */ + public void setStatusMessage(final String status) { + this.statusMessage = status; + } + + /** + * Getter for the statusMessage value. + * + * @return The statusMessage value. + */ + public String getStatusMessage() { + return statusMessage; + } + + /** + * Setter for the statusCode value. + * + * @param status the new statusCode value. + */ + public void setStatusCode(final String status) { + this.statusCode = status; + } + + @Override + public Object clone() throws CloneNotSupportedException{ + STORKLogoutResponse storkLogoutResponse = null; + storkLogoutResponse = (STORKLogoutResponse) super.clone(); + storkLogoutResponse.setTokenSaml(getTokenSaml()); + return storkLogoutResponse; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKStatusCode.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKStatusCode.java.svn-base new file mode 100644 index 000000000..a9c4a156b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKStatusCode.java.svn-base @@ -0,0 +1,68 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains the SAML Token Status Code. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2010-11-17 05:15:28 $ + */ +public enum STORKStatusCode { + + /** URI for Requester status code. */ + REQUESTER_URI("urn:oasis:names:tc:SAML:2.0:status:Requester"), + + /** URI for Responder status code. */ + RESPONDER_URI("urn:oasis:names:tc:SAML:2.0:status:Responder"), + + /** URI for Success status code. */ + SUCCESS_URI("urn:oasis:names:tc:SAML:2.0:status:Success"), + + /** Attribute is Available. */ + STATUS_AVAILABLE("Available"), + + /** Attribute is NotAvailable. */ + STATUS_NOT_AVAILABLE("NotAvailable"), + + /** Attribute is Withheld. */ + STATUS_WITHHELD("Withheld"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param val The Constant value. + */ + private STORKStatusCode(final String val) { + + this.value = val; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + + return value; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKSubStatusCode.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKSubStatusCode.java.svn-base new file mode 100644 index 000000000..0a711c9b7 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/STORKSubStatusCode.java.svn-base @@ -0,0 +1,71 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains the SAML Token Sub Status Code. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.7 $, $Date: 2010-11-17 05:15:28 $ + */ +public enum STORKSubStatusCode { + + /** URI for AuthnFailed status code. */ + AUTHN_FAILED_URI("urn:oasis:names:tc:SAML:2.0:status:AuthnFailed"), + + /** URI for InvalidAttrNameOrValue status code. */ + INVALID_ATTR_NAME_VALUE_URI( + "urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue"), + + /** URI for InvalidNameIDPolicy status code. */ + INVALID_NAMEID_POLICY_URI( + "urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy"), + + /** URI for VersionMismatch status code. */ + VERSION_MISMATCH_URI("urn:oasis:names:tc:SAML:2.0:status:VersionMismatch"), + + /** URI for RequestDenied status code. */ + REQUEST_DENIED_URI("urn:oasis:names:tc:SAML:2.0:status:RequestDenied"), + + /** URI for QaaNotSupported status code. */ + QAA_NOT_SUPPORTED( + "http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param val The Constant value. + */ + private STORKSubStatusCode(final String val) { + + this.value = val; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + + return value; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/package-info.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/package-info.java.svn-base new file mode 100644 index 000000000..19d45aaa2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/.svn/text-base/package-info.java.svn-base @@ -0,0 +1,9 @@ +/** + * Common Authentication Service functionalities to be deployed in every PEPS + * is contained in this package. + * In particular, it contains the SAML Engine that implements the SAML messages + * management + * + * @since 1.0 + */ +package eu.stork.peps.auth.commons; diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeConstants.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeConstants.java new file mode 100644 index 000000000..09769641c --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeConstants.java @@ -0,0 +1,72 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the STORK PEPS, Commons and Specific errors + * constant identifiers. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.2 $, $Date: 2010-11-17 05:15:28 $ + */ +public enum AttributeConstants { + + /** + * Represents the attribute's name index. + */ + ATTR_NAME_INDEX(0), + /** + * Represents the attribute's type index. + */ + ATTR_TYPE_INDEX(1), + /** + * Represents the attribute's value index. + */ + ATTR_VALUE_INDEX(2), + /** + * Represents the attribute's status index. + */ + ATTR_STATUS_INDEX(3), + /** + * Represents the number of allowed tuples. + */ + NUMBER_TUPLES(4); + + /** + * Represents the constant's value. + */ + private int attribute; + + /** + * Solo Constructor. + * + * @param attr The Attribute Constant value. + */ + AttributeConstants(final int attr) { + + this.attribute = attr; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public int intValue() { + + return attribute; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeName.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeName.java new file mode 100644 index 000000000..a44768c7e --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeName.java @@ -0,0 +1,74 @@ +package eu.stork.peps.auth.commons; + +/** + * This class is a bean used to store information relative to Attribute Names. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.00 $, $Date: 2013-11-26 $ + */ +public final class AttributeName { + + /** + * Attribute Id. + */ + private String attributeId; + + /** + * Attribute Name. + */ + private String attributeName; + + /** + * Attribute Name Constructor. + * + * @param aId Id of the Attribute Name. + * @param aName Name of the Attribute Name. + */ + public AttributeName(final String aId, final String aName) { + + this.attributeId = aId; + this.attributeName = aName; + } + + /** + * Getter for the attributeId value. + * + * @return The attributeId value. + */ + public String getAttributeId() { + + return attributeId; + } + + /** + * Setter for the attributeId value. + * + * @param aId Id of the Attribute Name. + */ + public void setAttributeId(final String aId) { + + this.attributeId = aId; + } + + /** + * Getter for the attributeName value. + * + * @return The attributeName value. + */ + public String getAttributeName() { + + return attributeName; + } + + /** + * Setter for the attributeName value. + * + * @param name Name of the Attribute Name. + */ + public void setAttributeName(final String name) { + + this.attributeName = name; + } + +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvider.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvider.java new file mode 100644 index 000000000..575732e27 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvider.java @@ -0,0 +1,123 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.List; + +/** + * This class is a bean used to store the information relative to the Attribute Provider. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.01 $, $Date: 2014-01-13 $ + */ +public final class AttributeProvider implements Serializable { + /** + * Unique identifier. + */ + private static final long serialVersionUID = 7210186241917444559L; + + /** + * Provider Id. + */ + private String providerId; + + /** + * Provider Name. + */ + private String providerName; + + /** + * Allowed groups of attribute names. + */ + private List allowedGroups; + + /** + * Attribute Provider Constructor. + * + * @param pId Id of the Attribute Provider. + * @param pName Name of the Attribute Provider. + */ + public AttributeProvider(final String pId, final String pName, final List pAllowedGroups) { + + this.providerId = pId; + this.providerName = pName; + this.allowedGroups = pAllowedGroups; + } + + /** + * Getter for the providerId value. + * + * @return The providerId value. + */ + public String getProviderId() { + + return providerId; + } + + /** + * Setter for the providerId value. + * + * @param pId Id of the Attribute Provider. + */ + public void setProviderId(final String pId) { + + this.providerId = pId; + } + + /** + * Getter for the providerName value. + * + * @return The providerName value. + */ + public String getProviderName() { + + return providerName; + } + + /** + * Setter for the providerName value. + * + * @param name Name of the Attribute Provider. + */ + public void setProviderName(final String name) { + + this.providerName = name; + } + + /** + * Getter for the allowedGroups value. + * + * @return The allowedGroups value. + */ + public List getAllowedGroups() { + + return allowedGroups; + } + + /** + * Setter for the allowedGroups value. + * + * @param name AllowedGroups of the Attribute Provider. + */ + public void setAllowedGroups(final List pAllowedGroups) { + + this.allowedGroups = pAllowedGroups; + } + + /** + * Check if an attribute name is allowed for this Attribute Provider + * + * @param pAttrName the Attribute Name to check + * @return true if the name is allowed, false otherwise + */ + public boolean isAttributeNameAllowed(final String pAttrName) { + if ( allowedGroups==null || pAttrName==null ) + return false; + else if ( allowedGroups.contains(PEPSParameters.ATTRIBUTE_GROUPS_ALL.toString()) ) + return true; + else if ( allowedGroups.contains(PEPSParameters.ATTRIBUTE_GROUPS_NONE.toString()) ) + return false; + else + return allowedGroups.contains(pAttrName); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvidersMap.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvidersMap.java new file mode 100644 index 000000000..85aec2625 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeProvidersMap.java @@ -0,0 +1,96 @@ +package eu.stork.peps.auth.commons; + +import java.util.Iterator; +import java.util.LinkedHashMap; + +import org.apache.log4j.Logger; + +/** + * Implementation of the AttributeProviderMap using a LinkedHashMap. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.01 $, $Date: 2013-09-20 $ + * + * @see LinkedHashMap + */ +public class AttributeProvidersMap extends LinkedHashMap + implements IAttributeProvidersMap { + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(AttributeProvidersMap.class.getName()); + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 8949081185106296122L; + + /** + * {@inheritDoc} + */ + @Override + public IPersonalAttributeList get(final AttributeSource key) { + return this.get((Object) key); + } + + /** + * {@inheritDoc} + */ + @Override + public IPersonalAttributeList remove(final AttributeSource key) { + return this.remove((Object) key); + } + + /** + * {@inheritDoc} + */ + @Override + public boolean containsKey(final AttributeSource key) { + return this.containsKey((Object) key); + } + + /** + * {@inheritDoc} + */ + @Override + public Iterator keyIterator() { + return this.keySet().iterator(); + } + + public void trace() { + Iterator iterator; + Iterator iterator2; + AttributeSource source; + IPersonalAttributeList pal; + PersonalAttribute pa; + + iterator = this.keyIterator(); + LOG.trace("Start dumping of AttributeProvidersMap\n======================="); + while (iterator.hasNext()) { + source = iterator.next(); + + LOG.trace("Source details: type [" + source.getSourceType() + "], URL [" + source.getProviderURL() + "]"); + + if(source.getSourceType() == AttributeSource.SOURCE_LOCAL_APROVIDER) { + LOG.trace("-> Attribute Provider: ID [" + source.getProvider().getProviderId() + "], name [" + source.getProvider().getProviderName() + "]"); + } + else { + LOG.trace("-> Country: ID [" + source.getCountry().getCountryId() + "], name [" + source.getCountry().getCountryName() + "]"); + } + + pal = this.get(source); + LOG.trace("++++++++=>"); + iterator2 = pal.iterator(); + while (iterator2.hasNext()) { + pa = iterator2.next(); + + LOG.trace("-> Citizen Attribute: name [" + pa.getName() + "], required [" + pa.isRequired() + "]"); + } + LOG.trace("<=++++++++"); + + LOG.trace("-----------------------"); + } + LOG.trace("END\n======================="); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeSource.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeSource.java new file mode 100644 index 000000000..846f54f67 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeSource.java @@ -0,0 +1,188 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information relative to the Attribute Source (either AttributeProvider or Country). + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.10 $, $Date: 2013-11-29 $ + */ +public final class AttributeSource implements Serializable { + /** + * Unique identifier. + */ + private static final long serialVersionUID = 432243595968469014L; + + public static final int SOURCE_LOCAL_APROVIDER = 1; + public static final int SOURCE_REMOTE_COUNTRY = 2; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(AttributeSource.class.getName()); + + /** + * Provider source. + */ + private int sourceType; + + /** + * Provider URL. + */ + private String providerURL; + + /** + * The local Attribute Provider. + */ + private AttributeProvider provider; + + /** + * The remote Country. + */ + private Country country; + + /** + * Attribute Source Constructor. + * + * @param provider The local Attribute Provider. + * @param pURL URL of the Attribute Provider. + */ + public AttributeSource(final AttributeProvider provider, final String pURL) { + this.setSourceType(SOURCE_LOCAL_APROVIDER); + + this.setProvider(provider); + this.setProviderURL(pURL); + } + + /** + * Attribute Source Constructor. + * + * @param country The remote Country. + * @param pURL URL of the Country. + */ + public AttributeSource(final Country country, final String pURL) { + this.setSourceType(SOURCE_REMOTE_COUNTRY); + + this.setCountry(country); + this.setProviderURL(pURL); + } + + /** + * @param sourceType the sourceType to set + */ + public void setSourceType(final int sourceType) { + this.sourceType = sourceType; + } + + /** + * @return the sourceType + */ + public int getSourceType() { + return sourceType; + } + + /** + * @param providerURL the providerURL to set + */ + public void setProviderURL(final String providerURL) { + this.providerURL = providerURL; + } + + /** + * @return the providerURL + */ + public String getProviderURL() { + return providerURL; + } + + /** + * @param provider the provider to set + */ + public void setProvider(final AttributeProvider provider) { + this.setSourceType(SOURCE_LOCAL_APROVIDER); + + this.provider = provider; + } + + /** + * @return the provider + */ + public AttributeProvider getProvider() { + return provider; + } + + /** + * @param country the country to set + */ + public void setCountry(final Country country) { + this.setSourceType(SOURCE_REMOTE_COUNTRY); + + this.country = country; + } + + /** + * @return the country + */ + public Country getCountry() { + return country; + } + + /** + * {@inheritDoc} + */ + public boolean equals(Object obj) { + boolean outcome = false; + + LOG.debug("Calling equals with Object."); + if ( obj instanceof AttributeSource ) { + LOG.debug("Calling equals with AttributeSource."); + outcome = this.equals((AttributeSource)obj); + } + + LOG.debug("Object equals outcome: " + outcome); + return outcome; + } + + /** + * Compare the given AttributeSource with the current object in order to determinine + * if they are equal. + * + * @param obj The AttributeSource to compare to + * + * @return true if the two objects are equal + */ + public boolean equals(AttributeSource obj) { + boolean outcome = false; + + if ( this.sourceType==obj.getSourceType() ) { + if ( this.sourceType==AttributeSource.SOURCE_LOCAL_APROVIDER ) { + if ( this.provider.getProviderId().equals(obj.getProvider().getProviderId()) ) + outcome = true; + } + else if ( this.sourceType==AttributeSource.SOURCE_REMOTE_COUNTRY ) { + if ( this.country.getCountryId().equals(obj.getCountry().getCountryId()) ) + outcome = true; + } + } + + LOG.debug("AttributeSource equals outcome: " + outcome); + return outcome; + } + + /** + * {@inheritDoc} + */ + public int hashCode() { + int hash = 1; + hash = hash * 17 + this.sourceType; + if ( this.sourceType==AttributeSource.SOURCE_LOCAL_APROVIDER ) + hash = hash * 31 + this.provider.getProviderName().hashCode(); + else + hash = hash * 31 + this.country.getCountryName().hashCode(); + return hash; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeUtil.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeUtil.java new file mode 100644 index 000000000..af7ab6cf3 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/AttributeUtil.java @@ -0,0 +1,231 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.lang.StringUtils; + +/** + * This class holds static helper methods. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.5 $, $Date: 2010-12-15 23:19:59 $ + */ +public final class AttributeUtil { + + /** + * Private constructor. Prevents the class from being instantiated. + */ + private AttributeUtil() { + // empty constructor + } + + /** + * Safe escape any given string. + * + * @param value The HTTP Value to escaped. + * + * @return The value escaped value. + */ + public static String escape(final String value) { + + final String attrSep = PEPSValues.ATTRIBUTE_SEP.toString(); + final String attrTupleSep = PEPSValues.ATTRIBUTE_TUPLE_SEP.toString(); + final String attrValueSep = PEPSValues.ATTRIBUTE_VALUE_SEP.toString(); + + final String escAttrSep = "%" + (int) attrSep.charAt(0); + final String escAttrTupleSep = "%" + (int) attrTupleSep.charAt(0); + final String escAttrValueSep = "%" + (int) attrValueSep.charAt(0); + + return value.replace(attrSep, escAttrSep) + .replace(attrTupleSep, escAttrTupleSep) + .replace(attrValueSep, escAttrValueSep); + } + + /** + * Unescape any given string. + * + * @param value The HTTP Value to be unescaped. + * + * @return The value unescaped value. + */ + public static String unescape(final String value) { + final String attrSep = PEPSValues.ATTRIBUTE_SEP.toString(); + final String attrTupleSep = PEPSValues.ATTRIBUTE_TUPLE_SEP.toString(); + final String attrValueSep = PEPSValues.ATTRIBUTE_VALUE_SEP.toString(); + + final String escAttrSep = "%" + (int) attrSep.charAt(0); + final String escAttrTupleSep = "%" + (int) attrTupleSep.charAt(0); + final String escAttrValueSep = "%" + (int) attrValueSep.charAt(0); + + return value.replace(escAttrSep, attrSep) + .replace(escAttrTupleSep, attrTupleSep) + .replace(escAttrValueSep, attrValueSep); + } + + /** + * Appends the string representation of an object to a StringBuilder. + * + * @param strBuilder The StringBuilder to append to. + * @param val The string representation of an object. + */ + public static void appendIfNotNull(final StringBuilder strBuilder, + final Object val) { + + if (val != null) { + strBuilder.append(val); + } + } + + /** + * Given a separator and a list of strings, joins the list, as a string, + * separated by the separator string. + * + * @param list The list of strings to join. + * @param separator The separator string. + * @return the list, as a string, separated by the separator string. + */ + public static String listToString(final List list, + final String separator) { + + final StringBuilder strBuilder = new StringBuilder(); + for (final String s : list) { + if (!StringUtils.isEmpty(s)) { + strBuilder.append(AttributeUtil.escape(s) + separator); + } + } + return strBuilder.toString(); + } + + /** + * Given a separator and a map of strings to strings, joins the map, as a + * string, separated by the separator string with the pair key/value + * concatenated with a '='. + * + * @param map The map of strings to join. + * @param separator The separator string. + * + * @return the map of strings, as a string, separated by the separator string + * with the pair key/value concatenated with a '='. + */ + public static String mapToString(final Map map, + final String separator) { + + final StringBuilder strBuilder = new StringBuilder(); + final Iterator> valuesIt = map.entrySet().iterator(); + while (valuesIt.hasNext()) { + final Entry entry = valuesIt.next(); + strBuilder.append(entry.getKey()); + strBuilder.append('='); + strBuilder.append(AttributeUtil.escape(entry.getValue())); + strBuilder.append(separator); + } + return strBuilder.toString(); + } + + /** + * Validates the attribute value format. + * + * @param value The attribute value to validate. + * + * @return true if value has a valid format. + */ + public static boolean isValidValue(final String value) { + boolean retVal = false; + if (value != null && value.charAt(0) == '[' && value.endsWith("]")) { + final String tmpAttrValue = value.substring(1, value.length() - 1); + final String[] vals = + tmpAttrValue.split(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + if (tmpAttrValue.length() >= 0 + || (vals.length > 0 && vals[0].length() > 0)) { + retVal = true; + } + } + return retVal; + } + + /** + * Validates the attribute type value. It's case insensitive. E.g. return true + * value to: a) "true", "TRUE", "True", ... b) "false", "FALSE", "False", ... + * + * @param type The attribute type value. + * + * @return true if type has a true or false (case insensitive) value. + */ + public static boolean isValidType(final String type) { + return StringUtils.isNotEmpty(type) && (PEPSValues.TRUE.toString().equalsIgnoreCase(type) || PEPSValues.FALSE.toString().equalsIgnoreCase(type)) ; + } + + /** + * Validates the Personal attribute tuple. E.g. name:type:[value]:status + * + * @param tuples The Personal attribute's tuple. + * + * @return true if the tuples' format is valid. + * + * @see PEPSUtil#validateParameter(String, String, String) + * @see String#equalsIgnoreCase(String) + */ + public static boolean hasValidTuples(final String[] tuples) { + boolean retVal = false; + + final int numberTuples = AttributeConstants.NUMBER_TUPLES.intValue(); + if (tuples != null && tuples.length == numberTuples) { + // validate attrName + final int attrNameIndex = AttributeConstants.ATTR_NAME_INDEX.intValue(); + final int attrTypeIndex = AttributeConstants.ATTR_TYPE_INDEX.intValue(); + final int attrValueIndex = AttributeConstants.ATTR_VALUE_INDEX.intValue(); + + retVal = + StringUtils.isNotEmpty(tuples[attrNameIndex]) + && StringUtils.isNotEmpty(tuples[attrTypeIndex]) + && StringUtils.isNotEmpty(tuples[attrValueIndex]) + && AttributeUtil.isValidType(tuples[attrTypeIndex]) + && AttributeUtil.isValidValue(tuples[attrValueIndex]); + } + return retVal; + } + + /** + * Check if all mandatory attributes have values. + * + * @param personalAttrList The Personal Attributes List. + * + * @return true if all mandatory attributes have values, false if at least one + * attribute doesn't have value. + */ + public static boolean checkMandatoryAttributes( + final IPersonalAttributeList personalAttrList) { + + final Iterator itAttributes = + personalAttrList.values().iterator(); + boolean retVal = true; + while (itAttributes.hasNext() && retVal) { + final PersonalAttribute attr = itAttributes.next(); + if (attr.isRequired() + && !STORKStatusCode.STATUS_AVAILABLE.toString() + .equals(attr.getStatus())) { + retVal = false; + } + } + return retVal; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CitizenConsent.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CitizenConsent.java new file mode 100644 index 000000000..9ebcfbd5a --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CitizenConsent.java @@ -0,0 +1,123 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.ArrayList; +import java.util.List; + +/** + * This class is a bean used to store the information relative to the Citizen + * Consent. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.15 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class CitizenConsent { + + /** + * Mandatory attributes list. + */ + private List mandatoryList; + + /** + * Optional attributes list. + */ + private List optionalList; + + /** + * Citizen Consent default Constructor. + */ + public CitizenConsent() { + this.mandatoryList = new ArrayList(); + this.optionalList = new ArrayList(); + } + + /** + * Getter for the mandatoryList value. + * + * @return The mandatoryList value. + */ + public List getMandatoryList() { + return this.mandatoryList; + } + + /** + * Setter for the mandatoryList value. + * + * @param mandatoryAttrList Mandatory parameters list. + */ + public void setMandatoryList(final List mandatoryAttrList) { + this.mandatoryList = mandatoryAttrList; + } + + /** + * Setter for some mandatoryAttribute. Adds the input parameter to the + * mandatoryList. + * + * @param mandatoryAttr Attribute to add to the mandatoryList. + */ + public void setMandatoryAttribute(final String mandatoryAttr) { + this.mandatoryList.add(mandatoryAttr); + } + + /** + * Getter for the optionalList value. + * + * @return The optionalList value. + */ + public List getOptionalList() { + return optionalList; + } + + /** + * Setter for the optionalList value. + * + * @param optAttrList Optional parameters list. + */ + public void setOptionalList(final List optAttrList) { + this.optionalList = optAttrList; + } + + /** + * Setter for some optionalAttr. Adds the input parameter to the optionalList. + * + * @param optionalAttr Attribute to add to the optionalList. + */ + public void setOptionalAttribute(final String optionalAttr) { + this.optionalList.add(optionalAttr); + } + + /** + * Returns a string in the following format. "Mandatory attributes: + * mandatoryAttr1;mandatoryAttr2;mandatoryAttrN Optional attributes: + * optionalAttr1;optionalAttr2;optionalAttrN" + * + * @return {@inheritDoc} + */ + public String toString() { + final StringBuilder strbldr = new StringBuilder(46); + strbldr.append("Mandatory attributes: "); + for (final String str : mandatoryList) { + strbldr.append(str).append(';'); + } + strbldr.append(" Optional attributes: "); + for (final String str : optionalList) { + strbldr.append(str).append(';'); + } + return strbldr.toString(); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Country.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Country.java new file mode 100644 index 000000000..001f9317a --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Country.java @@ -0,0 +1,95 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; + +/** + * This class is a bean used to store the information relative to the Country. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.10 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class Country implements Serializable { + + /** + * + */ + private static final long serialVersionUID = 1135994036496370993L; + +/** + * Country Id. + */ + private String countryId; + + /** + * Country Name. + */ + private String countryName; + + /** + * Country Constructor. + * + * @param cId Id of the Country. + * @param cName Name of the Country. + */ + public Country(final String cId, final String cName) { + + this.countryId = cId; + this.countryName = cName; + } + + /** + * Getter for the countryId value. + * + * @return The countryId value. + */ + public String getCountryId() { + + return countryId; + } + + /** + * Setter for the countryId value. + * + * @param cId Id of the Country. + */ + public void setCountryId(final String cId) { + + this.countryId = cId; + } + + /** + * Getter for the countryName value. + * + * @return The countryName value. + */ + public String getCountryName() { + + return countryName; + } + + /** + * Setter for the countryName value. + * + * @param name Name of the Country. + */ + public void setCountryName(final String name) { + + this.countryName = name; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CountryCodes.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CountryCodes.java new file mode 100644 index 000000000..54345f3ea --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/CountryCodes.java @@ -0,0 +1,79 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.Arrays; +import java.util.List; + +/** + * This class contains all the ISO 3166-1 Alpha 3 Country Codes. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.2 $, $Date: 2011-04-14 00:24:56 $ + */ +public final class CountryCodes { + + /** + * Private Constructor. + */ + private CountryCodes() { + + } + + /** + * ISO 3166-1 Alpha 3 Country Codes. + */ + private static List countrysAlpha3 = Arrays.asList("ABW", "AFG", + "AGO", "AIA", "ALA", "ALB", "AND", "ANT", "ARE", "ARG", "ARM", "ASM", + "ATA", "ATF", "ATG", "AUS", "AUT", "AZE", "BDI", "BEL", "BEN", "BES", + "BFA", "BGD", "BGR", "BHR", "BHS", "BIH", "BLM", "BLR", "BLZ", "BMU", + "BOL", "BRA", "BRB", "BRN", "BTN", "BUR", "BVT", "BWA", "BYS", "CAF", + "CAN", "CCK", "CHE", "CHL", "CHN", "CIV", "CMR", "COD", "COG", "COK", + "COL", "COM", "CPV", "CRI", "CSK", "CUB", "CUW", "CXR", "CYM", "CYP", + "CZE", "DEU", "DJI", "DMA", "DNK", "DOM", "DZA", "ECU", "EGY", "ERI", + "ESH", "ESP", "EST", "ETH", "FIN", "FJI", "FLK", "FRA", "FRO", "FSM", + "GAB", "GBR", "GEO", "GGY", "GHA", "GIB", "GIN", "GLP", "GMB", "GNB", + "GNQ", "GRC", "GRD", "GRL", "GTM", "GUF", "GUM", "GUY", "HKG", "HMD", + "HND", "HRV", "HTI", "HUN", "IDN", "IMN", "IND", "IOT", "IRL", "IRN", + "IRQ", "ISL", "ISR", "ITA", "JAM", "JEY", "JOR", "JPN", "KAZ", "KEN", + "KGZ", "KHM", "KIR", "KNA", "KOR", "KWT", "LAO", "LBN", "LBR", "LBY", + "LCA", "LIE", "LKA", "LSO", "LTU", "LUX", "LVA", "MAC", "MAF", "MAR", + "MCO", "MDA", "MDG", "MDV", "MEX", "MHL", "MKD", "MLI", "MLT", "MMR", + "MNE", "MNG", "MNP", "MOZ", "MRT", "MSR", "MTQ", "MUS", "MWI", "MYS", + "MYT", "NAM", "NCL", "NER", "NFK", "NGA", "NIC", "NIU", "NLD", "NOR", + "NPL", "NRU", "NZL", "OMN", "PAK", "PAN", "PCN", "PER", "PHL", "PLW", + "PNG", "POL", "PRI", "PRK", "PRT", "PRY", "PSE", "PYF", "QAT", "REU", + "ROM", "ROU", "RUS", "RWA", "SAU", "SCG", "SDN", "SEN", "SGP", "SGS", + "SHN", "SJM", "SLB", "SLE", "SLV", "SMR", "SOM", "SPM", "SRB", "STP", + "SUR", "SVK", "SVN", "SXW", "SWE", "SWZ", "SYC", "SYR", "TCA", "TCD", + "TGO", "THA", "TJK", "TKL", "TKM", "TLS", "TMP", "TON", "TTO", "TUN", + "TUR", "TUV", "TWN", "TZA", "UGA", "UKR", "UMI", "URY", "USA", "UZB", + "VAT", "VCT", "VEN", "VGB", "VIR", "VNM", "VUT", "WLF", "WSM", "YEM", + "YUG", "ZAF", "ZAR", "ZMB", "ZWE"); + + /** + * Searches the CountryCode (3166-1 alpha3 format) an return true if it + * exists. + * + * @param countryCode The Country code to search. + * + * @return true if the CountryCode exists, false otherwise. + */ + public static boolean hasCountryCodeAlpha3(final String countryCode) { + + return CountryCodes.countrysAlpha3.contains(countryCode); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/DateUtil.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/DateUtil.java new file mode 100644 index 000000000..9c0bd6775 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/DateUtil.java @@ -0,0 +1,169 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.sql.Timestamp; +import java.util.GregorianCalendar; + +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.joda.time.Years; +import org.joda.time.format.DateTimeFormat; +import org.joda.time.format.DateTimeFormatter; + +import eu.stork.peps.auth.commons.exceptions.SecurityPEPSException; + +/** + * This class holds static helper methods for Date Operations. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.4 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class DateUtil { + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(DateUtil.class.getName()); + + /** + * yyyy Date format size. + */ + private static final int YEAR_DATE_SIZE = 4; + + /** + * yyyyMM Date format size. + */ + private static final int MONTH_DATE_SIZE = 6; + + /** + * Private constructor. Prevents the class from being instantiated. + */ + private DateUtil() { + // empty constructor + } + + /** + * Fulfils dateValue with a valid date. The following roles are applied: a) If + * the dateValue only contains the year then fulfils with last year's day. + * e.g. this method returns 19951231 to the 1995 dateValue. b) If the + * dateValue contains the year and the month then fulfils with last month's + * day. e.g. this method returns 19950630 to the 199505 dateValue. + * + * @param dateValue The date to be fulfilled. + * + * @return The dateValue fulfilled. + */ + private static String fulfilDate(final String dateValue) { + + final StringBuffer strBuf = new StringBuffer(); + strBuf.append(dateValue); + // if the IdP just provides the year then we must fullfil the date. + if (dateValue.length() == YEAR_DATE_SIZE) { + strBuf.append(PEPSValues.LAST_MONTH.toString()); + } + // if the IdP provides the year and the month then we must fullfil the + // date. + if (dateValue.length() == MONTH_DATE_SIZE + || strBuf.length() == MONTH_DATE_SIZE) { + // IdP doesn't provide the day, so we will use DateTime to + // calculate it. + final String noDayCons = PEPSValues.NO_DAY_DATE_FORMAT.toString(); + final DateTimeFormatter fmt = DateTimeFormat.forPattern(noDayCons); + final DateTime dateTime = fmt.parseDateTime(strBuf.toString()); + // Append the last month's day. + strBuf.append(dateTime.dayOfMonth().withMaximumValue().getDayOfMonth()); + } + + return strBuf.toString(); + } + + /** + * Validates the dateValue format: a) if has a valid size; b) if has a numeric + * value; Note: dateValue must have the format yyyyMMdd. + * + * @param dateValueTmp The date to be validated. + * @param pattern The accepted date format. + * + * @return true if the date has a valid format. + */ + public static boolean isValidFormatDate(final String dateValueTmp, + final String pattern) { + + boolean retVal = true; + try { + final String dateValue = DateUtil.fulfilDate(dateValueTmp); + + final DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); + fmt.parseDateTime(dateValue); + } catch (final Exception e) { + // We catch Exception because we only have to return false + // value! + retVal = false; + } + return retVal; + } + + /** + * Calculates the age for a given date string. + * + * @param dateVal The date to be validated. + * @param now The current date. + * @param pattern The date pattern. + * + * @return The age value. + */ + public static int calculateAge(final String dateVal, final DateTime now, + final String pattern) { + + if (DateUtil.isValidFormatDate(dateVal, pattern)) { + try { + final String dateValueTemp = DateUtil.fulfilDate(dateVal); + final DateTimeFormatter fmt = DateTimeFormat.forPattern(pattern); + final DateTime dateTime = fmt.parseDateTime(dateValueTemp); + // Calculating age + final Years age = Years.yearsBetween(dateTime, now); + + return age.getYears(); + } catch (final IllegalArgumentException e) { + LOG.warn("Invalid date format (" + pattern + + ") or an invalid dateValue."); + throw new SecurityPEPSException( + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorCode()), + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorMessage()), + e); + } + } else { + LOG.warn("Couldn't calculate Age, invalid date!"); + throw new SecurityPEPSException( + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorCode()), + PEPSUtil.getConfig(PEPSErrors.INVALID_ATTRIBUTE_VALUE.errorMessage())); + } + + } + + /** + * Generates the current timestamp. + * + * @return timestamp The current timestamp + */ + public static Timestamp currentTimeStamp() { + final GregorianCalendar cal = new GregorianCalendar(); + final long millis = cal.getTimeInMillis(); + return new Timestamp(millis); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeListProcessor.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeListProcessor.java new file mode 100644 index 000000000..b13c70f04 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeListProcessor.java @@ -0,0 +1,148 @@ +package eu.stork.peps.auth.commons; + +import java.util.List; +import java.util.Map; + +/** + * Interface for {@link AttributeListProcessor}. + * + * @author ricardo.ferreira@multicert.com + * + * @version $Revision: $, $Date: $ + * + * @see IPersonalAttributeList + */ +public interface IAttributeListProcessor { + + /** + * Checks if attribute list only contains allowed attributes. + * + * @param attrList the requested attribute list + * @param attributes the allowed attributes + * + * @return true is all the attributes are allowed. + * + * @see IPersonalAttributeList + */ + boolean hasAllowedAttributes(final IPersonalAttributeList attrList, final List attributes); + + /** + * Lookup for business attribute. + * + * @param attrList the requested attribute list + * @param normalAttributes the normal attributes + * + * @return true is at least one business attribute was requested. + * + * @see IPersonalAttributeList + */ + boolean hasBusinessAttributes(final IPersonalAttributeList attrList, final List normalAttributes); + + /** + * Lookup for business attribute in normal attribute list (loaded by + * implementation). + * + * @param attrList the requested attribute list + * + * @return true is at least one business attribute was requested. + * + * @see IPersonalAttributeList + */ + boolean hasBusinessAttributes(final IPersonalAttributeList attrList); + + /** + * Adds eIdentifier, name, surname, and DateOfBirth attributes to get business + * attributes from some AP. + * + * @param attrList the requested attribute list + * @param attributes the list of attributes to add (eIdentifier, name, + * surname, and DateOfBirth). + * + * @return the requested attribute list and the new attributes added + * (eIdentifier, name, surname, and DateOfBirth). + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList addAPMandatoryAttributes(final IPersonalAttributeList attrList, final List attributes); + + /** + * Adds eIdentifier, name, surname, and DateOfBirth attributes, loaded by + * implementation, to get business attributes from some AP. + * + * @param attrList the requested attribute list + * + * @return the requested attribute list and the new attributes added + * (eIdentifier, name, surname, and DateOfBirth). + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList addAPMandatoryAttributes(final IPersonalAttributeList attrList); + + /** + * Removes from attribute list the given list of attributes. + * + * @param attrList the requested attribute list + * @param attributes the list of attributes to remove. + * + * @return the requested attribute list and the attributes removed. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList removeAPMandatoryAttributes(final IPersonalAttributeList attrList, final List attributes); + + /** + * Removes from attribute list the given list of attributes and change + * attributes status if attribute was optional in the request. + * + * @param attrList the requested attribute list + * @param attributes the map of attributes (attribute name, mandatory/optional) to remove. + * + * @return the requested attribute list and the attributes removed + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList removeAPMandatoryAttributes(IPersonalAttributeList attrList, Map attributes); + + /** + * Checks if mandate attribute exist in the requested Attribute List. Power + * attribute name to lookup is loaded by implementation. + * + * @param attrList the requested attribute list. + * + * @return true if mandate attribute exists or false otherwise. + * + * @see IPersonalAttributeList + */ + boolean hasPowerAttribute(final IPersonalAttributeList attrList); + + /** + * Checks if attribute name was requested and has value. + * + * @param attrList the requested attribute list. + * @param attrName the attribute name to lookup for . + * + * @return true if attribute was requested and has value or false otherwise. + * + * @see IPersonalAttributeList + */ + boolean hasAttributeValue(final IPersonalAttributeList attrList, final String attrName); + + /** + * Checks if attribute has value. + * + * @param attr the attribute to check. + * + * @return true if has value; + * + * @see PersonalAttribute + */ + boolean hasAttributeValue(final PersonalAttribute attr); + + /** + * Gets a map (attribute name, attribute isRequired) of attributes added to attribute list. + * + * @return the Map of attributes added and if is required to attribute list. + */ + Map getNormalAttributesAdded(); + +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeProvidersMap.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeProvidersMap.java new file mode 100644 index 000000000..733399ca3 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IAttributeProvidersMap.java @@ -0,0 +1,82 @@ +package eu.stork.peps.auth.commons; + +import java.util.Iterator; + +/** + * Interface for Attributes Providers map. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.00 $, $Date: 2013-09-20 $ + */ +public interface IAttributeProvidersMap { + + /** + * Returns the object associated the the given key. + * + * @param key with which the specified value is to be associated. + * + * @return The object associated the the given key. + */ + IPersonalAttributeList get(AttributeSource key); + + /** + * Associates a key to a value, and inserts them in the session object. + * + * @param key with which the specified value is to be associated. + * @param value to be associated with the specified key. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + Object put(AttributeSource key, IPersonalAttributeList value); + + /** + * Removes the mapping for this key. + * + * @param key with which the specified value is to be associated. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + IPersonalAttributeList remove(AttributeSource key); + + /** + * Returns the number of key-value mappings in this map. + * + * @return the number of key-value mappings in this map. + */ + int size(); + + /** + * Returns true if this map contains a mapping for the specified key. + * + * @param key with which the specified value is to be associated. + * + * @return true if this map contains a mapping for the specified key. + */ + boolean containsKey(AttributeSource key); + + /** + * Removes all mappings from this map. + */ + void clear(); + + /** + * Returns true if this map contains no key-value mappings. + * + * @return true if this map contains no key-value mappings. + */ + boolean isEmpty(); + + /** + * Returns an Iterator of the keys contained in this map. The implementation must + * take care in order for the Iterator to have predictable order of the returned + * keys. + * + * @return an iterator of the keys contained in this map + */ + Iterator keyIterator(); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IPersonalAttributeList.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IPersonalAttributeList.java new file mode 100644 index 000000000..b24c915c0 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IPersonalAttributeList.java @@ -0,0 +1,194 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.util.Collection; +import java.util.Iterator; +import java.util.Set; + +/** + * Interface for {@link PersonalAttributeList}. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.16 $, $Date: 2010-11-17 05:15:28 $ + * + * @see PersonalAttribute + */ +@SuppressWarnings("PMD.CloneMethodMustImplementCloneable") +public interface IPersonalAttributeList extends Iterable, + Cloneable { + + /** + * Associates the specified value with the specified key in this Personal + * Attribute List. + * + * @param key with which the specified value is to be associated. + * @param value to be associated with the specified key. + * + * @return the previous value associated with key, or null if there was no + * mapping for key. + * + * @see PersonalAttribute + */ + PersonalAttribute put(String key, PersonalAttribute value); + + /** + * Returns the value to which the specified key is mapped, or null if this map + * contains no mapping for the key. + * + * @param key whose associated value is to be returned. + * + * @return The value to which the specified key is mapped, or null if this map + * contains no mapping for the key. + * + * @see PersonalAttribute + */ + PersonalAttribute get(Object key); + + /** + * Adds to the PersonalAttributeList the given PersonalAttribute. It sets the + * attribute name as the key to the attribute value. + * + * @param value PersonalAttribute to add to the PersonalAttributeList + */ + void add(PersonalAttribute value); + + /** + * Get the size of the Personal Attribute List. + * + * @return size of the Personal Attribute List. + */ + int size(); + + /** + * Checks if the Personal Attribute List contains the given key. + * + * @param key with which the specified value is to be associated. + * + * @return true if the Personal Attribute List contains the given key, false + * otherwise. + */ + boolean containsKey(Object key); + + /** + * Getter for the iterator of the Personal Attribute List values. + * + * @return The iterator for the Personal Attribute List values. + * + * @see PersonalAttribute + */ + Iterator iterator(); + + /** + * Creates a Personal Attribute List from a String representing an Attribute + * List. + * + * @param attrList String Object representing the attribute list. + */ + void populate(String attrList); + + /** + * Removes the mapping for this key from this map if present. + * + * @param key key whose mapping is to be removed from the map. + * @return previous value associated with specified key, or null if + * there was no mapping for key. A null return can also + * indicate that the map previously associated null with the + * specified key. + */ + PersonalAttribute remove(Object key); + + /** + * Returns a collection view of the values contained in this map. The + * collection is backed by the map, so changes to the map are reflected in the + * collection, and vice-versa. The collection supports element removal, which + * removes the corresponding mapping from this map, via the + * Iterator.remove, Collection.remove, removeAll, + * retainAll, and clear operations. It does not support the + * add or addAll operations. + * + * @return a collection view of the values contained in this map. + */ + Collection values(); + + /** + * Returns a {@link Set} view of the keys contained in this map. + * The set is backed by the map, so changes to the map are + * reflected in the set, and vice-versa. If the map is modified + * while an iteration over the set is in progress (except through + * the iterator's own remove operation), the results of + * the iteration are undefined. The set supports element removal, + * which removes the corresponding mapping from the map, via the + * Iterator.remove, Set.remove, + * removeAll, retainAll, and clear + * operations. It does not support the add or addAll + * operations. + * + * @return a set view of the keys contained in this map + */ + Set keySet(); + + + /** + * Returns a IPersonalAttributeList of the complex attributes. + * + * @return an IPersonalAttributeList of the complex attributes. + */ + IPersonalAttributeList getComplexAttributes(); + + /** + * Returns a IPersonalAttributeList of the simple value attributes. + * + * @return an IPersonalAttributeList of the simple value attributes. + */ + IPersonalAttributeList getSimpleValueAttributes(); + + /** + * Returns a IPersonalAttributeList of the mandatory attributes in this map. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map. + */ + IPersonalAttributeList getMandatoryAttributes(); + + /** + * Returns a IPersonalAttributeList of the optional attributes in this map. + * + * @return an IPersonalAttributeList of the optional attributes contained in this map. + */ + IPersonalAttributeList getOptionalAttributes(); + + /** + * Returns true if this map contains no key-value mappings. + * + * @return true if this map contains no key-value mappings. + */ + boolean isEmpty(); + + /** + * Returns true if this map contains at least one element that doesn't have value. + * + * @return true if this map contains at least one element that doesn't have value. + */ + boolean hasMissingValues(); + + /** + * Returns a copy of this IPersonalAttributeList instance. + * + * @return The copy of this IPersonalAttributeList. + */ + Object clone() throws CloneNotSupportedException; + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkLogger.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkLogger.java new file mode 100644 index 000000000..33eb618f0 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkLogger.java @@ -0,0 +1,239 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * Interface for stork logging. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.10 $, $Date: 2011-02-17 22:44:34 $ + */ +public interface IStorkLogger { + + /** + * Getter for SpApplication. + * + * @return The SpApplication value. + */ + String getSpApplication(); + + /** + * Setter for SpApplication. + * + * @param spApplication The SP Application. + */ + void setSpApplication(String spApplication); + + /** + * Getter for ProviderName. + * + * @return The ProviderName value. + */ + String getProviderName(); + + /** + * Setter for ProviderName. + * + * @param providerName The provider name. + */ + void setProviderName(String providerName); + + /** + * + * Getter for Origin. + * + * @return The Origin value. + * + */ + String getOrigin(); + + /** + * Setter for Origin. + * + * @param origin The origin. + */ + void setOrigin(String origin); + + /** + * + * Getter for QAA Level. + * + * @return The QAA Level value. + * + */ + int getQaaLevel(); + + /** + * Setter for QAA Level. + * + * @param qaaLevel The qaa level. + */ + void setQaaLevel(int qaaLevel); + + /** + * + * Getter for timestamp. + * + * @return The timestamp value. + * + */ + String getTimestamp(); + + /** + * Setter for timestamp. + * + * @param timestamp The request's timestamp. + */ + void setTimestamp(String timestamp); + + /** + * Getter for InResponseTo. + * + * @return The InResponseTo value. + */ + String getInResponseTo(); + + /** + * Setter for InResponseTo. + * + * @param inResponseTo The Saml's response id. + */ + void setInResponseTo(String inResponseTo); + + /** + * Getter for InResponseToSPReq. + * + * @return The InResponseToSPReq value. + */ + String getInResponseToSPReq(); + + /** + * Setter for InResponseToSPRequ. + * + * @param inResponseToSPReq The Saml's response id. + */ + void setInResponseToSPReq(String inResponseToSPReq); + + /** + * Getter for opType. + * + * @return The opType value. + */ + String getOpType(); + + /** + * Setter for opType. + * + * @param opType The operation type. + */ + void setOpType(String opType); + + /** + * Getter for destination. + * + * @return The destination value. + */ + String getDestination(); + + /** + * Setter for destinationIp. + * + * @param destination The remote IP. + */ + void setDestination(String destination); + + /** + * Getter for message or assertion consumer. + * + * @return The message or assertion consumer. + */ + String getMessage(); + + /** + * Setter for message or assertion consumer. + * + * @param message or assertion consumer. + */ + void setMessage(String message); + + /** + * Getter for country. + * + * @return The country value. + */ + String getCountry(); + + /** + * Setter for country. + * + * @param country The country. + */ + void setCountry(String country); + + /** + * Getter for samlHash. + * + * @return The samlHash value. + */ + byte[] getSamlHash(); + + /** + * Setter for samlHash. + * + * @param samlHash the encrypted SAML token + */ + void setSamlHash(byte[] samlHash); + + /** + * Getter for msgId. + * + * @return the msgId + */ + String getMsgId(); + + /** + * Setter for msgId. + * + * @param msgId the ID of the originator of this message + */ + void setMsgId(String msgId); + + /** + * Getter for sPMsgId. + * + * @return the sPMsgId + */ + String getSPMsgId(); + + /** + * Setter for sPMsgId. + * + * @param sPMsgId the ID of the originator of this message + */ + void setSPMsgId(String sPMsgId); + + /** + * The format of the returned String must be the following: + * "requestCounter#ddMMMyyyykk:mm:ss#opType#originIp#originName + * #destinationIp#destinationName#samlHash#[originatorName#msgId#]" + * + * The values enclosed in '[]' only apply when logging responses. + * + * @return {@inheritDoc} + */ + @Override + String toString(); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkSession.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkSession.java new file mode 100644 index 000000000..f38b41838 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/IStorkSession.java @@ -0,0 +1,85 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * Interface for stork session. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.9 $, $Date: 2010-11-17 05:15:28 $ + */ +public interface IStorkSession { + + /** + * Returns the object associated the the given key. + * + * @param key with which the specified value is to be associated. + * + * @return The object associated the the given key. + */ + Object get(Object key); + + /** + * Associates a key to a value, and inserts them in the session object. + * + * @param key with which the specified value is to be associated. + * @param value to be associated with the specified key. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + Object put(String key, Object value); + + /** + * Removes the mapping for this key. + * + * @param key with which the specified value is to be associated. + * + * @return previous value associated with specified key, or null if there was + * no mapping for key. A null return can also indicate that the map + * previously associated null with the specified key. + */ + Object remove(Object key); + + /** + * Returns the number of key-value mappings in this map. + * + * @return the number of key-value mappings in this map. + */ + int size(); + + /** + * Returns true if this map contains a mapping for the specified key. + * + * @param key with which the specified value is to be associated. + * + * @return true if this map contains a mapping for the specified key. + */ + boolean containsKey(Object key); + + /** + * Removes all mappings from this map. + */ + void clear(); + + /** + * Returns true if this map contains no key-value mappings. + * + * @return true if this map contains no key-value mappings. + */ + boolean isEmpty(); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Linker.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Linker.java new file mode 100644 index 000000000..6e7c891da --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/Linker.java @@ -0,0 +1,316 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; + +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information of Attribute Providers, the Attribute + * List to be requested, the Assertions returned by the Attribute Providers and the values + * that each Attribute has. This information along with the current status of the Linker (the + * attribute providers that were queried and the remaining providers) is used by the PEPS + * actions in order to complete the Attribute gathering. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: 1.50 $, $Date: 2013-11-28 $ + */ +public final class Linker implements Serializable { + /** + * Unique identifier. + */ + private static final long serialVersionUID = -3268006381745987237L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(Linker.class.getName()); + + /** + * Attributes Providers map. + */ + private IAttributeProvidersMap attributeProvidersMap; + + /** + * Assertion map. + */ + private LinkedHashMap assertions; + + /** + * The current index of local (domestic) Attribute Providers. + */ + private int localIndex; + + /** + * The current index of remote (foreign) Attribute Providers - countries. + */ + private int remoteIndex; + + /** + * Constructs an empty Linker object. + */ + public Linker() { + localIndex = 0; + remoteIndex = 0; + + assertions = new LinkedHashMap(); + } + + /** + * Based on the internal state of the Linker it returns the next local Attribute Source + * + * @return The next Attribute Source or null if not found + * + * @see AttributeSource + */ + public AttributeSource getNextLocalProvider() { + Iterator iterator; + AttributeSource source, found; + int curIndex = 0; + + found = null; + + if ( attributeProvidersMap!=null && !attributeProvidersMap.isEmpty() ) { + iterator = attributeProvidersMap.keyIterator(); + while (iterator.hasNext()) { + source = iterator.next(); + + if ( source.getSourceType()==AttributeSource.SOURCE_LOCAL_APROVIDER ) { + if ( curIndex>=localIndex ) { + found = source; + + break; + } + + curIndex++; + } + } + } + + return found; + } + + /** + * Based on the internal state of the Linker it returns the next remote Attribute Source + * + * @return The next Attribute Source or null if not found + * + * @see AttributeSource + */ + public AttributeSource getNextRemoteProvider() { + Iterator iterator; + AttributeSource source, found; + int curIndex = 0; + + found = null; + + if ( attributeProvidersMap !=null && !attributeProvidersMap.isEmpty() ) { + iterator = attributeProvidersMap.keyIterator(); + while (iterator.hasNext()) { + source = iterator.next(); + + if ( source.getSourceType()==AttributeSource.SOURCE_REMOTE_COUNTRY ) { + if ( curIndex>=remoteIndex ) { + found = source; + + break; + } + + curIndex++; + } + } + } + + return found; + } + + /** + * It updates the Linker with the values returned by the Attribute Source. It also advances + * to the next index in order to mark this attribute source as completed. + * + * @param source The Attribute Source that was queried for attribute values. + * @param attrResponse The attrResponse returned by the Attribute Source that contains the attribute values. + * + * @see AttributeSource, STORKAttrQueryResponse + */ + public void setProviderReponse(AttributeSource source, STORKAttrQueryResponse attrResponse) { + if ( source.getSourceType()==AttributeSource.SOURCE_REMOTE_COUNTRY ) + remoteIndex++; + else + localIndex++; + + //Assertion storage + this.assertions.put(source, attrResponse); + + this.attributeProvidersMap.put(source, attrResponse.getPersonalAttributeList()); + //this.attributeProvidersMap.put(source, attrResponse.getTotalPersonalAttributeList()); + } + + /** + * Reset the internal state of the local Attribute Source in order to start over. + */ + public void resetLocalIndex() { + localIndex = 0; + } + + /** + * Reset the internal state of the remote Attribute Source in order to start over. + */ + public void resetRemoteIndex() { + remoteIndex = 0; + } + + /** + * Setter for attributeProvidersMap. + * + * @param attributeProvidersMap The attributeProvidersMap to set. + */ + public void setAttributeProvidersMap(IAttributeProvidersMap attributeProvidersMap) { + this.attributeProvidersMap = attributeProvidersMap; + } + + /** + * Getter for attributeProvidersMap. + * + * @return attributeProvidersMap + */ + public IAttributeProvidersMap getAttributeProvidersMap() { + return attributeProvidersMap; + } + + /** + * Returns the Personal Attribute list of the provided Attribute Source. + * + * @param source The attributeSource in reference + * + * @return The IPersonalAttributeList assosiated with this source or null if empty + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getProviderAttributes(AttributeSource source) { + if ( attributeProvidersMap.containsKey(source) ) + return attributeProvidersMap.get(source); + else + return null; + } + + /** + * Returns the merged Personal Attribute list from all the Attribute Sources. + * + * @return The IPersonalAttributeList merged Personal Attribute list or null if empty + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getAllAttributes() { + Iterator iterator; + AttributeSource source; + IPersonalAttributeList list, merged; + + merged = null; + + if ( attributeProvidersMap !=null && !attributeProvidersMap.isEmpty() ) { + iterator = attributeProvidersMap.keyIterator(); + + merged = new PersonalAttributeList(); + while (iterator.hasNext()) { + source = iterator.next(); + list = this.getProviderAttributes(source); + + for (final PersonalAttribute pa : list) { + merged.add(pa); + } + } + } + + return merged; + } + + /** + * Returns a List with all the assertions gathered by the AAS-PEPS module + * returned both by local APs or remote A-PEPS. + * + * @return The assertions returned from the APs and A-PEPS + */ + public List getAttrQueryResponseList() { + List originalAssertions; + + originalAssertions = new ArrayList(); + + //Gather all assertions + for (STORKAttrQueryResponse element : this.assertions.values()) { + originalAssertions.add(element); + } + + return originalAssertions; + } + + /** + * Checks the internal state of the Linker and if all Attribute Sources where visited + * returns true, otherwise it returns false. So if you go directly from AtPLinkerAction + * to MoreAttributesAction the call will have, since the method setProviderReponse + * was not executed from every Attribute Source. + * + * @return true if everything is OK, false otherwise + */ + public boolean isComplete() { + boolean outcome = false; + + LOG.debug("Check if linkder is complete: R[" + remoteIndex + "], L[" + localIndex + "], S[" + attributeProvidersMap.size() + "]"); + if ( attributeProvidersMap !=null && !attributeProvidersMap.isEmpty() ) { + if ( (remoteIndex + localIndex)==attributeProvidersMap.size() ) + outcome = true; + } + else { + outcome = true; + } + + return outcome; + } + + /** + * Merge the two Linker objects. + * + * @param previous The other Linker object to merge with this one. + */ + public void mergeWith(Linker previous) { + //BEFORE + if ( LOG.isDebugEnabled() ) { + LOG.debug("The attributeProvidersMap from the current object."); + ((AttributeProvidersMap)this.attributeProvidersMap).trace(); + LOG.debug("The attributeProvidersMap from the provided object."); + ((AttributeProvidersMap)previous.getAttributeProvidersMap()).trace(); + } + + IAttributeProvidersMap map = previous.getAttributeProvidersMap(); + Iterator items = map.keyIterator(); + while( items.hasNext() ) { + AttributeSource item = items.next(); + IPersonalAttributeList pal = map.get(item); + + if ( this.attributeProvidersMap.containsKey(item) ) { + IPersonalAttributeList new_pal = this.attributeProvidersMap.get(item); + + for(PersonalAttribute pa : pal) + new_pal.add(pa); + } + else { + if ( item.getSourceType()==AttributeSource.SOURCE_REMOTE_COUNTRY ) + remoteIndex++; + else + localIndex++; + + this.attributeProvidersMap.put(item, pal); + } + } + + //AFTER + if ( LOG.isDebugEnabled() ) { + LOG.debug("The attributeProvidersMap after the merge."); + ((AttributeProvidersMap)this.attributeProvidersMap).trace(); + } + } +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSErrors.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSErrors.java new file mode 100644 index 000000000..5da9ba494 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSErrors.java @@ -0,0 +1,392 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the STORK PEPS, Commons and Specific errors + * constant identifiers. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.10 $, $Date: 2011-02-17 22:44:34 $ + */ +public enum PEPSErrors { + + /** + * Represents the 'authenticationFailed' constant error identifier. + */ + AUTHENTICATION_FAILED_ERROR("authenticationFailed"), + /** + * Represents the 'spCountrySelector.errorCreatingSAML' constant error + * identifier. + */ + SP_COUNTRY_SELECTOR_ERROR_CREATE_SAML("spCountrySelector.errorCreatingSAML"), + /** + * Represents the 'spCountrySelector.destNull' constant error identifier. + */ + SP_COUNTRY_SELECTOR_DESTNULL("spCountrySelector.destNull"), + /** + * Represents the 'spCountrySelector.invalidAttr' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_ATTR("spCountrySelector.invalidAttr"), + /** + * Represents the 'spCountrySelector.invalidProviderName' constant error + * identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_PROVIDER_NAME( + "spCountrySelector.invalidProviderName"), + /** + * Represents the 'spCountrySelector.invalidQaaSPid' constant error + * identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_QAASPID("spCountrySelector.invalidQaaSPid"), + /** + * Represents the 'spCountrySelector.invalidSpId' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_SPID("spCountrySelector.invalidSpId"), + /** + * Represents the 'spCountrySelector.invalidSPQAA' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_SPQAA("spCountrySelector.invalidSPQAA"), + /** + * Represents the 'spCountrySelector.invalidSpURL' constant error identifier. + */ + SP_COUNTRY_SELECTOR_INVALID_SPURL("spCountrySelector.invalidSpURL"), + /** + * Represents the 'spCountrySelector.spNotAllowed' constant error identifier. + */ + SP_COUNTRY_SELECTOR_SPNOTALLOWED("spCountrySelector.spNotAllowed"), + + /** + * Represents the 'sProviderAction.errorCreatingSAML' constant error + * identifier. + */ + SPROVIDER_SELECTOR_ERROR_CREATE_SAML("sProviderAction.errorCreatingSAML"), + /** + * Represents the 'sProviderAction.attr' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_ATTR("sProviderAction.invalidAttr"), + /** + * Represents the 'sProviderAction.country' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_COUNTRY("sProviderAction.invalidCountry"), + /** + * Represents the 'sProviderAction.relayState' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_RELAY_STATE("sProviderAction.invalidRelayState"), + /** + * Represents the 'sProviderAction.saml' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SAML("sProviderAction.invalidSaml"), + /** + * Represents the 'sProviderAction.spAlias' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPALIAS("sProviderAction.invalidSPAlias"), + /** + * Represents the 'sProviderAction.spDomain' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPDOMAIN("sProviderAction.invalidSPDomain"), + /** + * Represents the 'sProviderAction.spId' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPID("sProviderAction.invalidSPId"), + /** + * Represents the 'sProviderAction.spQAA' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPQAA("sProviderAction.invalidSPQAA"), + /** + * Represents the 'sProviderAction.spQAAId' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPQAAID("sProviderAction.invalidSPQAAId"), + /** + * Represents the 'sProviderAction.spRedirect' constant error identifier. + */ + SPROVIDER_SELECTOR_INVALID_SPREDIRECT("sProviderAction.invalidSPRedirect"), + /** + * Represents the 'sPPowerValidationAction.invalidSPPVAttrList' constant error identifier. + */ + SPPOWERVALIDATION_SELECTOR_INVALID_SP_PV_ATTR_LIST("sPPowerValidationAction.invalidSPPVAttrList"), + + /** + * Represents the 'sProviderAction.invalidSPProviderName' constant error + * identifier. + */ + SPROVIDER_SELECTOR_INVALID_SP_PROVIDERNAME( + "sProviderAction.invalidSPProviderName"), + /** + * Represents the 'sProviderAction.spNotAllowed' constant error identifier. + */ + SPROVIDER_SELECTOR_SPNOTALLOWED("sProviderAction.spNotAllowed"), + + + /** + * Represents the 'internalError' constant error identifier. + */ + INTERNAL_ERROR("internalError"), + + /** + * Represents the 'colleagueRequest.attrNull' constant error identifier. + */ + COLLEAGUE_REQ_ATTR_NULL("colleagueRequest.attrNull"), + /** + * Represents the 'colleagueRequest.errorCreatingSAML' constant error + * identifier. + */ + COLLEAGUE_REQ_ERROR_CREATE_SAML("colleagueRequest.errorCreatingSAML"), + /** + * Represents the 'colleagueRequest.invalidCountryCode' constant error + * identifier. + */ + COLLEAGUE_REQ_INVALID_COUNTRYCODE("colleagueRequest.invalidCountryCode"), + /** + * Represents the 'colleagueRequest.invalidDestUrl' constant error identifier. + */ + COLLEAGUE_REQ_INVALID_DEST_URL("colleagueRequest.invalidDestUrl"), + /** + * Represents the 'colleagueRequest.invalidQaa' constant error identifier. + */ + COLLEAGUE_REQ_INVALID_QAA("colleagueRequest.invalidQaa"), + /** + * Represents the 'colleagueRequest.invalidRedirect' constant error + * identifier. + */ + COLLEAGUE_REQ_INVALID_REDIRECT("colleagueRequest.invalidRedirect"), + /** + * Represents the 'colleagueRequest.invalidSAML' constant error identifier. + */ + COLLEAGUE_REQ_INVALID_SAML("colleagueRequest.invalidSAML"), + + /** + * Represents the 'colleaguePVRequest.invalidPVAttrList' constant error identifier. + */ + COLLEAGUE_PV_REQ_INVALID_PV_ATTR_LIST("colleaguePVRequest.invalidPVAttrList"), + + + /** + * Represents the 'cpepsRedirectUrl' constant error identifier. + */ + CPEPS_REDIRECT_URL("cpepsRedirectUrl"), + /** + * Represents the 'spepsRedirectUrl' constant error identifier. + */ + SPEPS_REDIRECT_URL("spepsRedirectUrl"), + /** + * Represents the 'sProviderAction.invCountry' constant error identifier. + */ + SP_ACTION_INV_COUNTRY("sProviderAction.invCountry"), + + /** + * Represents the 'providernameAlias.invalid' constant error identifier. + */ + PROVIDER_ALIAS_INVALID("providernameAlias.invalid"), + + + /** + * Represents the 'cPeps.attrNull' constant error identifier. + */ + CPEPS_ATTR_NULL("cPeps.attrNull"), + + /** + * Represents the 'colleagueResponse.invalidSAML' constant error identifier. + */ + COLLEAGUE_RESP_INVALID_SAML("colleagueResponse.invalidSAML"), + + /** + * Represents the 'citizenNoConsent.mandatory' constant error identifier. + */ + CITIZEN_NO_CONSENT_MANDATORY("citizenNoConsent.mandatory"), + /** + * Represents the 'citizenResponse.mandatory' constant error identifier. + */ + CITIZEN_RESPONSE_MANDATORY("citizenResponse.mandatory"), + /** + * Represents the 'attVerification.mandatory' constant error identifier. + */ + ATT_VERIFICATION_MANDATORY("attVerification.mandatory"), + /** + * Represents the 'attrValue.verification' constant error identifier. + */ + ATTR_VALUE_VERIFICATION("attrValue.verification"), + + /** + * Represents the 'audienceRestrictionError' constant error identifier. + */ + AUDIENCE_RESTRICTION("audienceRestrictionError"), + /** + * Represents the 'auRequestIdError' constant error identifier. + */ + AU_REQUEST_ID("auRequestIdError"), + /** + * Represents the 'domain' constant error identifier. + */ + DOMAIN("domain"), + /** + * Represents the 'hash.error' constant error identifier. + */ + HASH_ERROR("hash.error"), + /** + * Represents the 'invalidAttributeList' constant error identifier. + */ + INVALID_ATTRIBUTE_LIST("invalidAttributeList"), + /** + * Represents the 'invalidAttributeValue' constant error identifier. + */ + INVALID_ATTRIBUTE_VALUE("invalidAttributeValue"), + /** + * Represents the 'qaaLevel' constant error identifier. + */ + QAALEVEL("qaaLevel"), + /** + * Represents the 'requests' constant error identifier. + */ + REQUESTS("requests"), + /** + * Represents the 'SPSAMLRequest' constant error identifier. + */ + SP_SAML_REQUEST("SPSAMLRequest"), + /** + * Represents the 'spepsSAMLRequest' constant error identifier. + */ + SPEPS_SAML_REQUEST("spepsSAMLRequest"), + /** + * Represents the 'IdPSAMLResponse' constant error identifier. + */ + IDP_SAML_RESPONSE("IdPSAMLResponse"), + /** + * Represents the 'cpepsSAMLResponse' constant error identifier. + */ + CPEPS_SAML_RESPONSE("cpepsSAMLResponse"), + /** + * Represents the 'cpepsSAMLResponse' constant error identifier. + */ + SPEPS_SAML_RESPONSE("spepsSAMLResponse"), + /** + * Represents the 'session' constant error identifier. + */ + SESSION("session"), + /** + * Represents the 'invalid.session' constant error identifier. + */ + INVALID_SESSION("invalid.session"), + /** + * Represents the 'invalid.sessionId' constant error identifier. + */ + INVALID_SESSION_ID("invalid.sessionId"), + /** + * Represents the 'missing.sessionId' constant error identifier. + */ + MISSING_SESSION_ID("sessionError"), + /** + * Represents the 'missing.mandate' constant error identifier. + */ + MISSING_MANDATE("missing.mandate"), + /** + * Represents the 'AtPSAMLResponse' constant error identifier. + */ + ATP_SAML_RESPONSE("AtPSAMLResponse"), + + /** + * Represents the 'AtPSAMLResponse' constant error identifier. + */ + ATP_RESPONSE_ERROR("atp.response.error"), + + /** + * Represents the 'apepsSAMLRequest' constant error identifier. + */ + APEPS_SAML_REQUEST("apepsSAMLRequest"), + + /** + * Represents the 'apepsSAMLResponse' constant error identifier. + */ + APEPS_SAML_RESPONSE("apepsSAMLResponse"), + + /** + * Represents the 'invalid.apepsRedirectUrl' constant error identifier. + */ + INVALID_APEPS_REDIRECT_URL("invalid.apepsRedirectUrl"), + + /** + * Represents the 'invalid.apepsCallbackUrl' constant error identifier. + */ + INVALID_APEPS_CALLBACK_URL("invalid.apepsCallbackUrl"), + + /** + * Represents the 'colleagueAttributeRequest.invalidSAML' constant error identifier. + */ + COLLEAGUE_ATTR_REQ_INVALID_SAML("colleagueAttributeRequest.invalidSAML"); + + /** + * Represents the constant's value. + */ + private String error; + + /** + * Solo Constructor. + * + * @param nError The Constant error value. + */ + PEPSErrors(final String nError) { + this.error = nError; + } + + /** + * Construct the errorCode Constant value. + * + * @return The errorCode Constant. + */ + public String errorCode() { + return error + ".code"; + } + + /** + * Construct the errorCode Constant value with the given code text. + * + * @param text the code text to append to the constant. + * + * @return The errorCode Constant for the given code text. + */ + public String errorCode(final String text) { + return error + "." + text + ".code"; + } + + /** + * Construct the errorMessage constant value. + * + * @return The errorMessage constant. + */ + public String errorMessage() { + return error + ".message"; + } + + /** + * Construct the errorMessage Constant value with the given message text. + * + * @param text the message text to append to the constant. + * + * @return The errorMessage Constant for the given text. + */ + public String errorMessage(final String text) { + return error + "." + text + ".message"; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + return error; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSParameters.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSParameters.java new file mode 100644 index 000000000..15c2ae552 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSParameters.java @@ -0,0 +1,625 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the STORK PEPS, Commons and Specific Parameters. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2011-07-07 20:48:45 $ + */ +public enum PEPSParameters { + + /** + * Represents the 'apId' parameter constant. + */ + AP_ID("apId"), + /** + * Represents the 'apUrl' parameter constant. + */ + AP_URL("apUrl"), + /** + * Represents the 'ap.number' parameter constant. + */ + AP_NUMBER("ap.number"), + + /** + * Represents the 'assertionConsumerServiceURL' parameter constant. + */ + ASSERTION_CONSUMER_S_URL("assertionConsumerServiceURL"), + + /** + * Represents the 'auth' parameter constant. + */ + AUTHENTICATION("auth"), + + /** + * Represents the 'attr' parameter constant. + */ + ATTRIBUTE("attr"), + /** + * Represents the 'attrName' parameter constant. + */ + ATTRIBUTE_NAME("attrName"), + /** + * Represents the 'attrStatus' parameter constant. + */ + ATTRIBUTE_STATUS("attrStatus"), + /** + * Represents the 'attrType' parameter constant. + */ + ATTRIBUTE_TYPE("attrType"), + /** + * Represents the 'attrValue' parameter constant. + */ + ATTRIBUTE_VALUE("attrValue"), + /** + * Represents the 'attrList' parameter constant. + */ + ATTRIBUTE_LIST("attrList"), + /** + * Represents the 'apMandAttrList' parameter constant. + */ + AP_MANDATORY_ATTRIBUTE_LIST("apMandAttrList"), + /** + * Represents the 'attrTuple' parameter constant. + */ + ATTRIBUTE_TUPLE("attrTuple"), + /** + * Represents the 'attribute-missing' parameter constant. + */ + ATTRIBUTE_MISSING("attribute-missing"), + /** + * Represents the 'attributesNotAllowed' parameter constant. + */ + ATTRIBUTES_NOT_ALLOWED("attributesNotAllowed"), + /** + * Represents the 'authnRequest' parameter constant. + */ + AUTH_REQUEST("authnRequest"), + + /** + * Represents the 'attrValue.number' parameter constant. + */ + ATTR_VALUE_NUMBER("attrValue.number"), + + /** + * Represents the 'derivation.date.format' parameter constant. + */ + DERIVATION_DATE_FORMAT("derivation.date.format"), + /** + * Represents the 'deriveAttr.number' parameter constant. + */ + DERIVE_ATTRIBUTE_NUMBER("deriveAttr.number"), + + /** + * Represents the complex attributes parameter constant. + */ + COMPLEX_ADDRESS_VALUE("canonicalResidenceAddress"), + COMPLEX_NEWATTRIBUTE_VALUE("newAttribute2"), + COMPLEX_HASDEGREE_VALUE("hasDegree"), + COMPLEX_MANDATECONTENT_VALUE("mandateContent"), + /** + * Represents the 'consent-type' parameter constant. + */ + CONSENT_TYPE("consent-type"), + /** + * Represents the 'consent-value' parameter constant. + */ + CONSENT_VALUE("consent-value"), + /** + * Represents the 'country' parameter constant. + */ + COUNTRY("country"), + /** + * Represents the 'countryOrigin' parameter constant. + */ + COUNTRY_ORIGIN("countryOrigin"), + + /** + * Represents the 'cpepsURL' parameter constant. + */ + CPEPS_URL("cpepsURL"), + /** + * Represents the 'callback' parameter constant. + */ + CPEPS_CALLBACK("callback"), + /** + * Represents the 'peps.specificidpredirect.url' parameter constant. + */ + CPEPS_IDP_CALLBACK_VALUE("peps.specificidpredirect.url"), + /** + * Represents the 'peps.specificapredirect.url' parameter constant. + */ + CPEPS_AP_CALLBACK_VALUE("peps.specificapredirect.url"), + + /** + * Represents the 'errorCode' parameter constant. + */ + ERROR_CODE("errorCode"), + /** + * Represents the 'subCode' parameter constant. + */ + ERROR_SUBCODE("subCode"), + /** + * Represents the 'errorMessage' parameter constant. + */ + ERROR_MESSAGE("errorMessage"), + /** + * Represents the 'errorRedirectUrl' parameter constant. + */ + ERROR_REDIRECT_URL("errorRedirectUrl"), + + /** + * errorRedirectUrl Represents the 'external-authentication' parameter + * constant. + */ + EXTERNAL_AUTH("external-authentication"), + /** + * Represents the 'external-ap' parameter constant. + */ + EXTERNAL_AP("external-ap"), + /** + * Represents the 'external-pv' parameter constant. + */ + EXTERNAL_PV("external-pv"), + /** + * Represents the 'external-sig-module' parameter constant. + */ + EXT_SIG_CREATOR_MOD("external-sig-module"), + + /** + * Represents the 'http-x-forwarded-for' parameter constant. + */ + HTTP_X_FORWARDED_FOR("http-x-forwarded-for"), + + /** + * Represents the 'idp.url' parameter constant. + */ + IDP_URL("idp.url"), + /** + * Represents the 'internal-authentication' parameter constant. + */ + INTERNAL_AUTH("internal-authentication"), + /** + * Represents the 'internal-ap' parameter constant. + */ + INTERNAL_AP("internal-ap"), + /** + * Represents the 'internal-pv' parameter constant. + */ + INTERNAL_PV("internal-pv"), + + /** + * Represents the 'samlIssuer' parameter constant. + */ + ISSUER("samlIssuer"), + /** + * Represents the 'samlIssuer.idp' parameter constant. + */ + ISSUER_IDP("samlIssuer.idp"), + /** + * Represents the 'samlIssuer.atp' parameter constant. + */ + ISSUER_ATP("samlIssuer.atp"), + + /** + * Represents the 'mandatory' parameter constant. + */ + MANDATORY("mandatory"), + /** + * Represents the 'mandatoryAttributeMissing' parameter constant. + */ + MANDATORY_ATTR_MISSING("mandatoryAttributeMissing"), + /** + * Represents the 'mandatoryConsentAttrMissing' parameter constant. + */ + MANDATORY_CONSENT_MISSING("mandatoryConsentAttrMissing"), + /** + * Represents the 'missing-attrs' parameter constant. + */ + MISSING_ATTRS("missing-attrs"), + /** + * Represents the 'no-more-attrs' parameter constant. + */ + NO_MORE_ATTRS("no-more-attrs"), + + /** + * Represents the 'optional' parameter constant. + */ + OPTIONAL("optional"), + + /** + * Represents the 'no-consent-type' parameter constant. + */ + NO_CONSENT_TYPE("no-consent-type"), + /** + * Represents the 'no-consent-value' parameter constant. + */ + NO_CONSENT_VALUE("no-consent-value"), + + /** + * Represents the 'provider.name' parameter constant. + */ + PROVIDER_NAME_VALUE("providerName"), + /** + * Represents the 'cpeps.askconsent' parameter constant. + */ + PEPS_ASK_CONSENT("cpeps.askconsent"), + /** + * Represents the 'cpeps.askconsentvalue' parameter constant. + */ + PEPS_ASK_CONSENT_VALUE("cpeps.askconsentvalue"), + /** + * Represents the 'pepsAuth' parameter constant. + */ + PEPS_AUTH_CONSENT("pepsAuth"), + /** + * Represents the 'validation.bypass' parameter constant. + */ + PEPS_BYPASS("validation.bypass"), + /** + * Represents the 'cpeps.number' parameter constant. + */ + PEPS_NUMBER("cpeps.number"), + /** + * Represents the 'cpeps.specificapredirect.url' parameter constant. + */ + PEPS_SPECIFIC_URL("cpeps.specificapredirect.url"), + /** + * Represents the 'pv.url' parameter constant. + */ + PV_URL("pv.url"), + + /** + * Represents the 'qaaLevel' parameter constant. + */ + QAALEVEL("qaaLevel"), + + /** + * Represents the 'speps.redirectUrl' parameter constant. + */ + SPEPS_REDIRECT_URL("speps.redirectUrl"), + + /** + * Represents the 'sp.redirectUrl' parameter constant. + */ + SP_REDIRECT_URL("sp.redirectUrl"), + /** + * Represents the 'cpeps.redirectUrl' parameter constant. + */ + CPEPS_REDIRECT_URL("cpeps.redirectUrl"), + /** + * Represents the 'RelayState' parameter constant. + */ + RELAY_STATE("RelayState"), + /** + * Represents the 'remoteAddr' parameter constant. + */ + REMOTE_ADDR("remoteAddr"), + /** + * Represents the 'remoteUser' parameter constant. + */ + REMOTE_USER("remoteUser"), + + /** + * Represents the 'SAMLRequest' parameter constant. + */ + SAML_REQUEST("SAMLRequest"), + /** + * Represents the 'SAMLResponse' parameter constant. + */ + SAML_RESPONSE("SAMLResponse"), + /** + * Represents the 'SAMLFail' parameter constant. + */ + SAML_TOKEN_FAIL("SAMLFail"), + /** + * Represents the 'TokenId' parameter constant. + */ + SAML_TOKEN_ID("TokenId"), + /** + * Represents the 'inResponseTo' parameter constant. + */ + SAML_IN_RESPONSE_TO("inResponseTo"), + /** + * Represents the 'inResponseTo.idp' parameter constant. + */ + SAML_IN_RESPONSE_TO_IDP("inResponseTo.idp"), + /** + * Represents the 'inResponseTo.atp' parameter constant. + */ + SAML_IN_RESPONSE_TO_ATP("inResponseTo.atp"), + /** + * Represents the 'SignatureResponse' parameter constant. + */ + SIGNATURE_RESPONSE("SignatureResponse"), + + /** + * Represents the 'cPepsSession' parameter constant. + */ + SESSION_ID_URL("cPepsSession"), + /** + * Represents the 'spId' parameter constant. + */ + SP_ID("spId"), + /** + * Represents the 'spQaaLevel' parameter constant. + */ + SP_QAALEVEL("spQaaLevel"), + /** + * Represents the 'spUrl' parameter constant. + */ + SP_URL("spUrl"), + + /** + * Represents the 'allow.derivation.all' parameter constant. + */ + SPECIFIC_ALLOW_DERIVATION_ALL("allow.derivation.all"), + /** + * Represents the ''allow.unknowns parameter constant. + */ + SPECIFIC_ALLOW_UNKNOWNS("allow.unknowns"), + /** + * Represents the 'derivation.date.separator' parameter constant. + */ + SPECIFIC_DERIVATION_DATE_SEP("derivation.date.separator"), + /** + * Represents the 'derivation.month.position' parameter constant. + */ + SPECIFIC_DERIVATION_MONTH_POS("derivation.month.position"), + /** + * Represents the 'derivation.day.position' parameter constant. + */ + SPECIFIC_DERIVATION_DAY_POS("derivation.day.position"), + /** + * Represents the 'derivation.year.position' parameter constant. + */ + SPECIFIC_DERIVATION_YEAR_POS("derivation.year.position"), + + /** + * sp.authorized.parameters Represents the '' parameter constant. + */ + SPEPS_AUTHORIZED("sp.authorized.parameters"), + + /** + * Represents the 'spSector' constant value. + */ + SPSECTOR("spSector"), + /** + * Represents the 'spApplication' constant value. + */ + SPAPPLICATION("spApplication"), + /** + * Represents the 'spCountry' constant value. + */ + SPCOUNTRY("spCountry"), + /** + * Represents the 'spInstitution' constant value. + */ + SPINSTITUTION("spInstitution"), + /** + * Represents the 'storkAttribute.number' parameter constant. + */ + STORK_ATTRIBUTE_NUMBER("storkAttribute.number"), + /** + * Represents the 'storkAttributeValue.number' parameter constant. + */ + STORK_ATTRIBUTE_VALUE_NUMBER("storkAttributeValue.number"), + + /** + * Represents the 'username' parameter constant. + */ + USERNAME("username"), + + /** + * Represents the 'tooManyParameters' parameter constant. + */ + TOO_MANY_PARAMETERS("tooManyParameters"), + /** + * Represents the 'validation.active' parameter constant. + */ + VALIDATION_ACTIVE("validation.active"), + + /** + * Represents the 'x-forwarded-for' parameter constant. + */ + X_FORWARDED_FOR("x-forwarded-for"), + /** + * Represents the 'x-forwarded-host' parameter constant. + */ + X_FORWARDED_HOST("x-forwarded-host"), + /** + * Represents the 'XMLResponse' parameter constant. + */ + XML_RESPONSE("XMLResponse"), + + /** + * Represents the 'ap-cpeps.number' parameter constant. + */ + AP_PEPS_NUMBER("ap-cpeps.number"), + + /** + * Represents the 'atp.number' parameter constant. + */ + ATTRIBUTE_PROVIDER_NUMBER("atp.number"), + + /** + * Represents the 'atn.number' parameter constant. + */ + ATTRIBUTE_NAME_NUMBER("atn.number"), + + /** + * Represents the 'apLinker' parameter constant. + */ + AP_LINKER("apLinker"), + + /** + * Represents the 'prevApLinker' parameter constant. + */ + PREV_AP_LINKER("prevApLinker"), + + /** + * Represents the 'NOSEL' parameter constant (no attribute provider selected). + */ + AP_NO_SELECTION("NOSEL"), + + /** + * Represents the 'OCSEL' parameter constant (attribute provider in another country). + */ + AP_OTHER_COUNTRY("OCSEL"), + + /** + * Represents the '_provider' suffix parameter constant. + */ + AP_PROVIDER_SELECT_SUFFIX("_provider"), + + /** + * Represents the '_country' suffix parameter constant. + */ + AP_COUNTRY_SELECT_SUFFIX("_country"), + + /** + * Represents the '_name' suffix parameter constant. + */ + AP_NAME_SELECT_SUFFIX("_name"), + + /** + * Represents the 'next-ap' parameter constant. + */ + NEXT_AP("next-ap"), + + /** + * Represents the 'next-apeps' parameter constant. + */ + NEXT_APEPS("next-apeps"), + + /** + * Represents the 'back-to-apeps' parameter constant. + */ + BACK_TO_APEPS("back-to-apeps"), + + /** + * Represents the 'is-remote-apeps' parameter constant. + */ + IS_REMOTE_APEPS("is-remote-apeps"), + + /** + * Represents the 'more-attributes' parameter constant. + */ + MORE_ATTRIBUTES("more-attributes"), + + /** + * Represents the 'attr-filter.number' parameter constant. + */ + ATTRIBUTES_FILTER_NUMBER("attr-filter.number"), + + /** + * Represents the 'attr-group' parameter constant. + */ + ATTRIBUTE_GROUPS("attr-group"), + + /** + * Represents the 'all' parameter constant for attribute groups. + */ + ATTRIBUTE_GROUPS_ALL("all"), + + /** + * Represents the 'none' parameter constant for attribute groups. + */ + ATTRIBUTE_GROUPS_NONE("none"), + + /** + * Represents the 'atp.url' parameter constant. + */ + ATP_URL("atp.url"), + /** + * Represents the 'apepsURL' parameter constant. + */ + APEPS_URL("apepsUrl"), + + /** + * Represents the 'apepsCountry' parameter constant. + */ + APEPS_COUNTRY("apepsCountry"), + + /** + * Represents the 'apepsAuthRequest' parameter constant. + */ + APEPS_ATTR_REQUEST("apepsAttrRequest"), + + /** + * Represents the 'isApepsRequest' parameter constant. + */ + APEPS_REQUEST_COMPLETE("apeps-request-complete"), + + /** + * Represents the 'apeps.callbackUrl' parameter constant. + */ + APEPS_CALLBACK_URL("apeps.callbackUrl"), + /** + * Represents the 'attrListMand' parameter constant. + */ + ATTR_LIST_MAND("attrListMand"), + + /** + * Represents the 'attrListOpt' parameter constant. + */ + ATTR_LIST_OPT("attrListOpt"), + + /** + * Represents the 'simpleAttrListMand' parameter constant. + */ + SIMPLE_ATTR_LIST_MAND("simpleAttrListMand"), + + /** + * Represents the 'simpleAttrListOpt' parameter constant. + */ + SIMPLE_ATTR_LIST_OPT("simpleAttrListOpt"), + + /** + * Represents the 'complexAttrListMand' parameter constant. + */ + COMPLEX_ATTR_LIST_MAND("complexAttrListMand"), + + /** + * Represents the 'complexAttrListOpt' parameter constant. + */ + COMPLEX_ATTR_LIST_OPT("complexAttrListOpt"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param nValue The Constant value. + */ + PEPSParameters(final String nValue) { + this.value = nValue; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + return value; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSUtil.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSUtil.java new file mode 100644 index 000000000..69729c0bb --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSUtil.java @@ -0,0 +1,391 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.Properties; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.bouncycastle.crypto.Digest; +import org.bouncycastle.util.encoders.Base64; +import org.bouncycastle.util.encoders.UrlBase64; + +import eu.stork.peps.auth.commons.exceptions.InternalErrorPEPSException; +import eu.stork.peps.auth.commons.exceptions.InvalidParameterPEPSException; + +/** + * This class holds static helper methods. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.75 $, $Date: 2010-11-23 00:05:35 $ + */ +public final class PEPSUtil { + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(PEPSUtil.class.getName()); + + /** + * Configurations object. + */ + private static Properties configs; + + /** + * Max prefix. + */ + private static final String MAX_PARAM_PREFIX = "max."; + + /** + * Code prefix to get error code. + */ + private static final String CODE_PARAM_SUFFIX = ".code"; + + /** + * param's size prefix to get max param size. + */ + private static final String MAX_PARAM_SUFFIX = ".size"; + + /** + * Message prefix to get error message. + */ + private static final String MSG_PARAM_SUFFIX = ".message"; + + /** + * Private constructor. Prevents the class from being instantiated. + */ + private PEPSUtil() { + // empty constructor + } + + /** + * Creates a single instance of this class and sets the properties. + * + * @param nConfigs The set of available configurations. + * + * @return The created PEPSUtil's class. + */ + public static PEPSUtil createInstance(final Properties nConfigs) { + if (nConfigs != null) { + PEPSUtil.configs = nConfigs; + } + return new PEPSUtil(); + } + + /** + * Getter for the Properties. + * + * @return configs The properties value. + */ + public Properties getConfigs() { + return configs; + } + + /** + * Setter for the Properties. + * + * @param nConfigs The new properties value. + */ + public static void setConfigs(final Properties nConfigs) { + if (nConfigs != null) { + PEPSUtil.configs = nConfigs; + } + } + + /** + * Returns the identifier of some configuration given a set of configurations + * and the corresponding configuration key. + * + * @param configKey The key that IDs some configuration. + * + * @return The configuration String value. + */ + public static String getConfig(final String configKey) { + return configs.getProperty(configKey); + } + + /** + * Validates the input paramValue identified by the paramName. + * + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + * + * @return true if the parameter is valid. + */ + public static boolean isValidParameter(final String paramName, + final String paramValue) { + + final String validationParam = + PEPSUtil.getConfig(PEPSParameters.VALIDATION_ACTIVE.toString()); + boolean retVal = true; + + final String paramConf = MAX_PARAM_PREFIX + paramName + MAX_PARAM_SUFFIX; + + if (PEPSValues.TRUE.toString().equals(validationParam)) { + final String paramSizeStr = PEPSUtil.getConfig(paramConf); + // Checking if the parameter size exists and if it's numeric + if (StringUtils.isNumeric(paramSizeStr)) { + final int maxParamSize = Integer.valueOf(paramSizeStr); + if (StringUtils.isEmpty(paramValue) + || paramValue.length() > maxParamSize) { + retVal = false; + LOG.warn("Invalid parameter [" + paramName + "] value " + paramValue); + } + } else { + retVal = false; + LOG.error("Missing " + paramConf + + " configuration in the pepsUtils.properties configuration file"); + } + } + return retVal; + } + + /** + * Validates the Parameter and throws an exception if an error occurs. Throws + * an InvalidParameterPEPSException runtime exception if the parameter is + * invalid. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + */ + public static void validateParameter(final String className, + final String paramName, final Object paramValue) { + + if (paramValue == null) { + PEPSUtil.validateParameter(className, paramName, ""); + } else { + PEPSUtil.validateParameter(className, paramName, paramValue.toString()); + } + } + + /** + * Validates the Parameters and throws an exception if an error occurs. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + */ + public static void validateParameter(final String className, + final String paramName, final String paramValue) { + + PEPSUtil.validateParameter(className, paramName, paramValue, + PEPSUtil.getErrorCode(paramName), PEPSUtil.getErrorMessage(paramName)); + } + + /** + * Validates the Parameters and throws an exception if an error occurs. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + * @param error The PEPSError to get error code and messages from configs. + */ + public static void validateParameter(final String className, + final String paramName, final String paramValue, final PEPSErrors error) { + + PEPSUtil.validateParameter(className, paramName, paramValue, + PEPSUtil.getConfig(error.errorCode()), + PEPSUtil.getConfig(error.errorMessage())); + } + + /** + * Validates the HTTP Parameter and throws an exception if an error occurs. + * Throws an InvalidParameterPEPSException runtime exception if the parameter + * is invalid. + * + * @param className The Class Name that invoked the method. + * @param paramName The name of the parameter to validate. + * @param paramValue The value of the parameter to validate. + * @param errorCode The error code to include on the exception. + * @param errorMessage The error message to include on the exception. + */ + public static void validateParameter(final String className, + final String paramName, final String paramValue, final String errorCode, + final String errorMessage) { + + if (!isValidParameter(paramName, paramValue)) { + LOG.warn("Invalid parameter [" + paramName + "] value found at " + + className); + throw new InvalidParameterPEPSException(errorCode, errorMessage); + } + } + + /** + * Getter for the error code of some given error related to the input param. + * + * @param paramName The name of the parameter associated with the error. + * + * @return The code of the error. + */ + private static String getErrorCode(final String paramName) { + return getConfig(paramName + CODE_PARAM_SUFFIX); + } + + /** + * Getter for the error message of some given error related to the input + * parameter. + * + * @param paramName The name of the parameter associated with the message. + * + * @return The message for the error. + */ + private static String getErrorMessage(final String paramName) { + return getConfig(paramName + MSG_PARAM_SUFFIX); + } + + /** + * {@link Base64} encodes the input samlToken parameter. + * + * @param samlToken the SAML Token to be encoded. + * + * @return The Base64 String representing the samlToken. + * + * @see Base64#encode + */ + public static String encodeSAMLToken(final byte[] samlToken) { + try { + return new String(Base64.encode(samlToken), "UTF8"); + } catch (final UnsupportedEncodingException e) { + LOG.error(PEPSErrors.INTERNAL_ERROR.errorMessage(), e); + return null; + } + } + + /** + * Encode samltoken url safe + * @param samlToken the saml token to encode + * @return the bas64 encoded string + */ + public static String encodeSAMLTokenUrlSafe(final byte[] samlToken) { + try { + return new String(UrlBase64.encode(samlToken), "UTF8"); + } catch (final UnsupportedEncodingException e) { + LOG.error(PEPSErrors.INTERNAL_ERROR.errorMessage(), e); + return null; + } + } + + /** + * Decodes the {@link Base64} String input parameter representing a samlToken. + * + * @param samlToken the SAML Token to be decoded. + * + * @return The samlToken decoded bytes. + * + * @see Base64#decode + */ + public static byte[] decodeSAMLToken(final String samlToken) { + return Base64.decode(samlToken); + } + + /** + * Decode URL save base64 saml token + * @param samlToken the SAML toke to decode + * @return The decoded bytes + */ + public static byte[] decodeSAMLTokenUrlSafe(final String samlToken) { + return UrlBase64.decode(samlToken); + } + + /** + * Hashes a SAML token. Throws an InternalErrorPEPSException runtime exception + * if the Cryptographic Engine fails. + * + * @param samlToken the SAML Token to be hashed. + * + * @return byte[] with the hashed SAML Token. + */ + public static byte[] hashPersonalToken(final byte[] samlToken) { + try { + final String className = + PEPSUtil.getConfig(PEPSValues.HASH_DIGEST_CLASS.toString()); + + final Digest digest = + (Digest) Class.forName(className).getConstructor() + .newInstance((Object[]) null); + digest.update(samlToken, 0, samlToken.length); + + final int retLength = digest.getDigestSize(); + final byte[] ret = new byte[retLength]; + + digest.doFinal(ret, 0); + return ret; + + } catch (final Exception e) { + // For all those exceptions that could be thrown, we always log it and + // thrown an InternalErrorPEPSException. + LOG.error(PEPSErrors.HASH_ERROR.errorMessage(), e); + throw new InternalErrorPEPSException( + PEPSUtil.getConfig(PEPSErrors.HASH_ERROR.errorCode()), + PEPSUtil.getConfig(PEPSErrors.HASH_ERROR.errorMessage()), e); + } + } + + /** + * Gets the Stork error code in the error message if exists! + * + * @param errorMessage The message to get the error code if exists; + * + * @return the error code if exists. Returns null otherwise. + */ + public static String getStorkErrorCode(final String errorMessage) { + if (StringUtils.isNotBlank(errorMessage) + && errorMessage.indexOf(PEPSValues.ERROR_MESSAGE_SEP.toString()) >= 0) { + final String[] msgSplitted = + errorMessage.split(PEPSValues.ERROR_MESSAGE_SEP.toString()); + if (msgSplitted.length == 2 && StringUtils.isNumeric(msgSplitted[0])) { + return msgSplitted[0]; + } + } + return null; + } + + /** + * Gets the Stork error message in the saml message if exists! + * + * @param errorMessage The message to get in the saml message if exists; + * + * @return the error message if exists. Returns the original message + * otherwise. + */ + public static String getStorkErrorMessage(final String errorMessage) { + if (StringUtils.isNotBlank(errorMessage) + && errorMessage.indexOf(PEPSValues.ERROR_MESSAGE_SEP.toString()) >= 0) { + final String[] msgSplitted = + errorMessage.split(PEPSValues.ERROR_MESSAGE_SEP.toString()); + if (msgSplitted.length == 2 && StringUtils.isNumeric(msgSplitted[0])) { + return msgSplitted[1]; + } + } + return errorMessage; + } + + /** + * Get inputstream from string + * @param string the string to convert + * @param codePage the codepage of string + * @return an inputstream + * @throws UnsupportedEncodingException + */ + public static InputStream getStream(final String string, final String codePage) throws UnsupportedEncodingException + { + return new ByteArrayInputStream(string.getBytes(codePage)); + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSValues.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSValues.java new file mode 100644 index 000000000..89cf8fa9b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PEPSValues.java @@ -0,0 +1,342 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains all the value constants. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.17 $, $Date: 2011-07-07 20:48:45 $ + */ +public enum PEPSValues { + + /** + * Represents the 'all' constant value. + */ + ALL("all"), + /** + * Represents the 'none' constant value. + */ + NONE("none"), + /** + * Represents the 'true' constant value. + */ + TRUE("true"), + /** + * Represents the 'false' constant value. + */ + FALSE("false"), + /** + * Represents the empty string constant value. + */ + EMPTY_STRING(""), + + /** + * Represents the ',' separator constant value. + */ + ATTRIBUTE_VALUE_SEP(","), + /** + * Represents the ';' separator constant value. + */ + ATTRIBUTE_SEP(";"), + /** + * Represents the ':' separator constant value. + */ + ATTRIBUTE_TUPLE_SEP(":"), + /** + * Represents the '/' separator constant value. + */ + EID_SEPARATOR("/"), + /** + * Represents the ' - ' separator constant value. + */ + ERROR_MESSAGE_SEP(" - "), + /** + * Represents the '#' parameter constant value. + */ + LOGGER_SEP("#"), + /** + * Represents the 'NOT_AVAILABLE' parameter constant value. + */ + NOT_AVAILABLE("NotAvailable"), + /** + * Represents the ';' parameter constant value. + */ + SPEPS_AUTHORIZED_SEP(";"), + + /** + * Represents the 'ap' constant value. + */ + AP("ap"), + /** + * Represents the 'C-PEPS' constant value. + */ + CPEPS("C-PEPS"), + /** + * Represents the 'cpeps' constant value. + */ + CPEPS_PREFIX("cpeps"), + /** + * Represents the 'peps' constant value. + */ + PEPS("peps"), + /** + * Represents the '-PEPS' constant value. + */ + PEPS_SUFFIX("-PEPS"), + /** + * Represents the 'SP' constant value. + */ + SP("SP"), + /** + * Represents the 'S-PEPS' constant value. + */ + SPEPS("S-PEPS"), + /** + * Represents the 'speps' constant value. + */ + SPEPS_PREFIX("speps"), + /** + * Represents the 'sp.default.parameters' constant value. + */ + DEFAULT("sp.default.parameters"), + /** + * Represents the default saml id constant value. + */ + DEFAULT_SAML_ID("1"), + /** + * Represents the 'hashDigest.className' constant value. + */ + HASH_DIGEST_CLASS("hashDigest.className"), + + /** + * Represents the 'eu.stork.communication.requests' constant value. + */ + STORK_PACKAGE_REQUEST_LOGGER_VALUE("eu.stork.communication.requests"), + /** + * Represents the 'eu.stork.communication.responses' constant value. + */ + STORK_PACKAGE_RESPONSE_LOGGER_VALUE("eu.stork.communication.responses"), + + /** + * Represents the 'S-PEPS receives request from SP' constant value. + */ + SP_REQUEST("S-PEPS receives request from SP"), + /** + * Represents the 'Get Citizen Consent' constant value. + */ + CITIZEN_CONSENT_LOG("Get Citizen Consent"), + /** + * Represents the 'C-PEPS receives request from S-PEPS' constant value. + */ + CPEPS_REQUEST("C-PEPS receives request from S-PEPS"), + /** + * Represents the 'C-PEPS generates response to S-PEPS' constant value. + */ + CPEPS_RESPONSE("C-PEPS generates response to S-PEPS"), + /** + * Represents the 'S-PEPS generates request to C-PEPS' constant value. + */ + SPEPS_REQUEST("S-PEPS generates request to C-PEPS"), + /** + * Represents the 'S-PEPS receives response from C-PEPS' constant value. + */ + SPEPS_RESPONSE("S-PEPS receives response from C-PEPS"), + /** + * Represents the 'S-PEPS generates response to SP' constant value. + */ + SP_RESPONSE("S-PEPS generates response to SP"), + /** + * Represents the 'Success' constant value. + */ + SUCCESS("Success"), + /** + * Represents the December's month number constant value. + */ + LAST_MONTH("12"), + /** + * Represents the yyyyMM constant value. + */ + NO_DAY_DATE_FORMAT("yyyyMM"), + + /** + * Represents the 'attrValue' constant value. + */ + ATTRIBUTE("attrValue"), + /** + * Represents the 'derivedAttr' constant value. + */ + DERIVE_ATTRIBUTE("deriveAttr"), + /** + * Represents the 'storkAttribute' constant value. + */ + STORK_ATTRIBUTE("storkAttribute"), + + /** + * Represents the 'properties' constant value. + */ + PROPERTIES("properties"), + /** + * Represents the 'referer' constant value. + */ + REFERER("referer"), + /** + * Represents the 'host' constant value. + */ + HOST("host"), + /** + * Represents the 'spid' constant value. + */ + SPID("spid"), + /** + * Represents the 'domain' constant value. + */ + DOMAIN("domain"), + /** + * Represents the '.validation' constant value. + */ + VALIDATION_SUFFIX(".validation"), + /** + * Represents the 'jsessionid' constant value. + */ + EQUAL("="), + /** + * Represents the 'HttpOnly' constant value. + */ + HTTP_ONLY("HttpOnly"), + /** + * Represents the 'SET-COOKIE' constant value. + */ + JSSESSION("JSESSIONID"), + /** + * Represents the '=' constant value. + */ + SETCOOKIE("SET-COOKIE"), + /** + * Represents the ';' constant value. + */ + SEMICOLON(";"), + /** + * Represents the ' ' constant value. + */ + SPACE(" "), + /** + * Represents the 'atp' constant value. + */ + APROVIDER_PREFIX("atp"), + /** + * Represents the 'atn' constant value. + */ + ANAME_PREFIX("atn"), + /** + * Represents the 'ap-cpeps' constant value. + */ + AP_CPEPS_PREFIX("ap-cpeps"), + /** + * Represents the 'attr-filter' constant value. + */ + AP_ATTRFILTER_PREFIX("attr-filter"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param val The Constant value. + */ + PEPSValues(final String val) { + + this.value = val; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + + return value; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".id". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String index(final int index) { + + return value + index + ".id"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".value". + * + * @param index the number. + * + * @return The concatenated string value. + */ + public String value(final int index) { + + return value + index + ".value"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".name". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String name(final int index) { + + return value + index + ".name"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".url". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String url(final int index) { + + return value + index + ".url"; + } + + /** + * Construct the return value with the following structure + * CONSTANT_VALUE+index+".allowedGroups". + * + * @param index the number. + * + * @return The concatenated String value. + */ + public String allowedGroups(final int index) { + + return value + index + ".allowedGroups"; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttribute.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttribute.java new file mode 100644 index 000000000..5d8281445 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttribute.java @@ -0,0 +1,348 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import org.apache.log4j.Logger; + +import eu.stork.peps.auth.commons.exceptions.InternalErrorPEPSException; + +/** + * This class is a bean used to store the information relative to the + * PersonalAttribute. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.22 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class PersonalAttribute implements Serializable, Cloneable { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 2612951678412632174L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(PersonalAttribute.class + .getName()); + + /** + * Name of the personal attribute. + */ + private String name; + + /** + * Values of the personal attribute. + */ + private List value = new ArrayList(); + + /** + * Type of the personal attribute. + */ + private String type; + + /** + * Complex values of the personal attribute. + */ + private Map complexValue = new ConcurrentHashMap(); + + /** + * Is the personal attribute mandatory? + */ + private transient boolean required; + + /** + * Returned status of the attribute from the IdP. + */ + private String status; + + /** + * Name of the personal attribute. + */ + private String friendlyName; + + /** + * Empty Constructor. + */ + public PersonalAttribute() { + super(); + } + + /** + * PersonalAttribute Constructor for complex values. + * + * @param attrName The attribute name. + * @param attrIsRequired The attribute type value. + * @param attrComplexValue The attribute's value. + * @param attrStatus The attribute's status value. + */ + public PersonalAttribute(final String attrName, final boolean attrIsRequired, + final List attrComplexValue, final String attrStatus) { + this.setName(attrName); + this.setIsRequired(attrIsRequired); + this.setValue(attrComplexValue); + this.setStatus(attrStatus); + } + + /** + * PersonalAttribute Constructor for complex values. + * + * @param attrName The attribute name. + * @param attrIsRequired The attribute type value. + * @param attrComplexValue The attribute's complex value. + * @param attrStatus The attribute's status value. + */ + public PersonalAttribute(final String attrName, final boolean attrIsRequired, + final Map attrComplexValue, final String attrStatus) { + this.setName(attrName); + this.setIsRequired(attrIsRequired); + this.setComplexValue(attrComplexValue); + this.setStatus(attrStatus); + } + + /** + * {@inheritDoc} + */ + @SuppressWarnings("unchecked") + public Object clone() { + + try { + final PersonalAttribute personalAttr = (PersonalAttribute) super.clone(); + personalAttr.setIsRequired(this.isRequired()); + personalAttr.setName(this.getName()); + personalAttr.setStatus(this.getStatus()); + if (!isEmptyValue()) { + final List val = + (List) ((ArrayList) this.getValue()).clone(); + personalAttr.setValue(val); + } + if (!isEmptyComplexValue()) { + final Map complexVal = + (Map) ((HashMap) this + .getComplexValue()).clone(); + personalAttr.setComplexValue(complexVal); + } + return personalAttr; + } catch (final CloneNotSupportedException e) { + // assert false; + LOG.trace("Nothing to do."); + throw new InternalErrorPEPSException( + PEPSUtil.getConfig(PEPSErrors.INTERNAL_ERROR.errorCode()), + PEPSUtil.getConfig(PEPSErrors.INTERNAL_ERROR.errorMessage()), e); + } + } + + /** + * Getter for the required value. + * + * @return The required value. + */ + public boolean isRequired() { + return required; + } + + /** + * Setter for the required value. + * + * @param attrIsRequired this attribute? + */ + public void setIsRequired(final boolean attrIsRequired) { + this.required = attrIsRequired; + } + + /** + * Getter for the name value. + * + * @return The name value. + */ + public String getName() { + return name; + } + + /** + * Setter for the name value. + * + * @param attrName The personal attribute name. + */ + public void setName(final String attrName) { + this.name = attrName; + } + + /** + * Getter for the value. + * + * @return The list of values. + */ + public List getValue() { + return value; + } + + /** + * Setter for the list of values. + * + * @param attrValue The personal attribute value. + */ + public void setValue(final List attrValue) { + if (attrValue != null) { + this.value = attrValue; + } + } + + + /** + * Getter for the type value. + * + * @return The name value. + */ + public String getType() { + return type; + } + + /** + * Setter for the type value. + * + * @param attrName The personal attribute type. + */ + public void setType(final String attrType) { + this.type = attrType; + } + + /** + * Getter for the status. + * + * @return The status value. + */ + public String getStatus() { + return status; + } + + /** + * Setter for the status value. + * + * @param attrStatus The personal attribute status. + */ + public void setStatus(final String attrStatus) { + this.status = attrStatus; + } + + /** + * Getter for the complex value. + * + * @return The complex value. + */ + public Map getComplexValue() { + return complexValue; + } + + /** + * Setter for the complex value. + * + * @param complexVal The personal attribute Complex value. + */ + public void setComplexValue(final Map complexVal) { + if (complexVal != null) { + this.complexValue = complexVal; + } + } + + /** + * Getter for the personal's friendly name. + * + * @return The personal's friendly name value. + */ + public String getFriendlyName() { + return friendlyName; + } + + /** + * Setter for the personal's friendly name. + * + * @param fName The personal's friendly name. + */ + public void setFriendlyName(final String fName) { + this.friendlyName = fName; + } + + /** + * Return true the value is empty. + * + * @return True if the value is empty "[]"; + */ + public boolean isEmptyValue() { + return value.isEmpty() || (value.size() == 1 && value.get(0).length() == 0); + } + + /** + * Returns true if the Complex Value is empty. + * + * @return True if the Complex Value is empty; + */ + public boolean isEmptyComplexValue() { + return complexValue.isEmpty(); + } + + /** + * Returns true if the Status is empty. + * + * @return True if the Status is empty; + */ + public boolean isEmptyStatus() { + return (status == null || status.length() == 0); + } + + /** + * Prints the PersonalAttribute in the following format. + * name:required:[v,a,l,u,e,s]|[v=a,l=u,e=s]:status; + * + * @return The PersonalAttribute as a string. + */ + public String toString() { + final StringBuilder strBuild = new StringBuilder(); + + AttributeUtil.appendIfNotNull(strBuild, getName()); + strBuild.append(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString()); + AttributeUtil.appendIfNotNull(strBuild, String.valueOf(isRequired())); + strBuild.append(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString()); + strBuild.append('['); + + if (isEmptyValue()) { + if (!isEmptyComplexValue()) { + AttributeUtil.appendIfNotNull(strBuild, AttributeUtil.mapToString( + getComplexValue(), PEPSValues.ATTRIBUTE_VALUE_SEP.toString())); + } + } else { + AttributeUtil.appendIfNotNull( + strBuild, + AttributeUtil.listToString(getValue(), + PEPSValues.ATTRIBUTE_VALUE_SEP.toString())); + } + + strBuild.append(']'); + strBuild.append(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString()); + AttributeUtil.appendIfNotNull(strBuild, getStatus()); + strBuild.append(PEPSValues.ATTRIBUTE_SEP.toString()); + + return strBuild.toString(); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java new file mode 100644 index 000000000..9a0f87488 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/PersonalAttributeList.java @@ -0,0 +1,397 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.StringTokenizer; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information relative to the + * PersonalAttributeList. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.27 $, $Date: 2010-11-18 22:54:56 $ + * + * @see PersonalAttribute + */ +@SuppressWarnings("PMD") +public final class PersonalAttributeList extends + ConcurrentHashMap implements IPersonalAttributeList, Serializable { + + /** + * Logger object. + */ + private static final Logger LOG = Logger + .getLogger(PersonalAttributeList.class.getName()); + + /** + * Serial id. + */ + private static final long serialVersionUID = 7375127363889975062L; + + /** + * Hash with the latest fetched attribute name alias. + */ + private final Map latestAttrAlias = + new HashMap(); + + /** + * Hash with mapping number of alias or the attribute name. + */ + private final Map attrAliasNumber = + new HashMap(); + + /** + * Default constructor. + */ + public PersonalAttributeList() { + // The best practices recommend to call the super constructor. + super(); + } + + /** + * Constructor with initial capacity for the PersonalAttributeList size. + * + * @param capacity The initial capacity for the PersonalAttributeList. + */ + public PersonalAttributeList(final int capacity) { + super(capacity); + } + + /** + * {@inheritDoc} + */ + public Iterator iterator() { + return this.values().iterator(); + } + + /** + * {@inheritDoc} + */ + public PersonalAttribute get(final Object key) { + String attrName = (String) key; + + if (this.latestAttrAlias.containsKey(key)) { + attrName = attrName + this.latestAttrAlias.get(key); + } else { + if (this.attrAliasNumber.containsKey(key)) { + this.latestAttrAlias.put(attrName, this.attrAliasNumber.get(key)); + } + } + return super.get(attrName); + } + + /** + * {@inheritDoc} + */ + public void add(final PersonalAttribute value) { + if (value != null) { + this.put(value.getName(), value); + } + } + + /** + * {@inheritDoc} + */ + public PersonalAttribute put(final String key, final PersonalAttribute val) { + if (StringUtils.isNotEmpty(key) && val != null) { + // Validate if attribute name already exists! + String attrAlias = key; + if (this.containsKey(attrAlias)) { + //TODO isAgeOver should not be hardcoded, a better way of handling multipe isAgeOver requests should be implemented. + if (!val.isEmptyValue() && StringUtils.isNumeric(val.getValue().get(0)) && "isAgeOver".equals( val.getName() ) ) { + final String attrValue = val.getValue().get(0); + attrAlias = key + attrValue; + this.attrAliasNumber.put(key, Integer.valueOf(attrValue)); + } else { + final PersonalAttribute attr = super.get(key); + if (!attr.isEmptyValue() + && StringUtils.isNumeric(attr.getValue().get(0))) { + attrAlias = key + attr.getValue().get(0); + super.put(key, (PersonalAttribute) attr); + this.attrAliasNumber.put(key, null); + } + } + } + return super.put(attrAlias, val); + } else { + return null; + } + } + + /** + * {@inheritDoc} + */ + public void populate(final String attrList) { + final StringTokenizer strToken = + new StringTokenizer(attrList, PEPSValues.ATTRIBUTE_SEP.toString()); + + while (strToken.hasMoreTokens()) { + final PersonalAttribute persAttr = new PersonalAttribute(); + String[] tuples = + strToken.nextToken().split(PEPSValues.ATTRIBUTE_TUPLE_SEP.toString(), + AttributeConstants.NUMBER_TUPLES.intValue()); + + // Convert to the new format if needed! + tuples = convertFormat(tuples); + + if (AttributeUtil.hasValidTuples(tuples)) { + final int attrValueIndex = + AttributeConstants.ATTR_VALUE_INDEX.intValue(); + final String tmpAttrValue = + tuples[attrValueIndex].substring(1, + tuples[attrValueIndex].length() - 1); + final String[] vals = + tmpAttrValue.split(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + persAttr.setName(tuples[AttributeConstants.ATTR_NAME_INDEX.intValue()]); + persAttr.setIsRequired(Boolean + .valueOf(tuples[AttributeConstants.ATTR_TYPE_INDEX.intValue()])); + + // check if it is a complex value + if (isComplexValue(vals)) { + persAttr.setComplexValue(createComplexValue(vals)); + } + else + { + persAttr.setValue(createValues(vals)); + } + + if (tuples.length == AttributeConstants.NUMBER_TUPLES.intValue()) { + persAttr.setStatus(tuples[AttributeConstants.ATTR_STATUS_INDEX + .intValue()]); + } + this.put(tuples[AttributeConstants.ATTR_NAME_INDEX.intValue()], + persAttr); + + } else { + LOG.warn("Invalid personal attribute list tuples"); + } + + } + } + + /** + * Returns a copy of this IPersonalAttributeList instance. + * + * @return The copy of this IPersonalAttributeList. + */ + public Object clone() { + try { + return (PersonalAttributeList) super.clone(); + } catch (CloneNotSupportedException e) { + return null; + } + } + + /** + * Creates a string in the following format. + * + * attrName:attrType:[attrValue1,attrValue2=attrComplexValue]:attrStatus; + * + * @return {@inheritDoc} + */ + @Override + public String toString() { + final Iterator> itAttrs = + this.entrySet().iterator(); + final StringBuilder strBuilder = new StringBuilder(); + + while (itAttrs.hasNext()) { + final Entry attrEntry = itAttrs.next(); + final PersonalAttribute attr = attrEntry.getValue(); + //strBuilder.append(attr.toString()); + strBuilder.insert(0, attr.toString()); + } + + return strBuilder.toString(); + } + + /** + * Validates and creates the attribute's complex values. + * + * @param values The complex values. + * + * @return The {@link Map} with the complex values. + * + * @see Map + */ + private Map createComplexValue(final String[] values) { + final Map complexValue = new HashMap(); + for (final String val : values) { + final String[] tVal = val.split("="); + if (StringUtils.isNotEmpty(val) && tVal.length == 2) { + complexValue.put(tVal[0], AttributeUtil.unescape(tVal[1])); + } + } + return complexValue; + } + + /** + * Checks if value is complex or not + * @param values The values to check + * @return True if succesful + */ + private boolean isComplexValue(final String[] values) { + boolean isComplex = false; + if (values.length > 0) { + final String[] tVal = values[0].split("="); + if (StringUtils.isNotEmpty(values[0]) && tVal.length == 2) { + isComplex = true; + } + } + return isComplex; + } + + /** + * Validates and creates the attribute values. + * + * @param vals The attribute values. + * + * @return The {@link List} with the attribute values. + * + * @see List + */ + private List createValues(final String[] vals) { + final List values = new ArrayList(); + for (final String val : vals) { + if (StringUtils.isNotEmpty(val)) { + values.add(AttributeUtil.unescape(val)); + } + } + return values; + } + + /** + * Converts the attribute tuple (attrName:attrType...) to the new format. + * + * @param tuples The attribute tuples to convert. + * + * @return The attribute tuples in the new format. + */ + private String[] convertFormat(final String[] tuples) { + final String[] newFormatTuples = + new String[AttributeConstants.NUMBER_TUPLES.intValue()]; + if (tuples != null) { + System.arraycopy(tuples, 0, newFormatTuples, 0, tuples.length); + + for (int i = tuples.length; i < newFormatTuples.length; i++) { + if (i == AttributeConstants.ATTR_VALUE_INDEX.intValue()) { + newFormatTuples[i] = "[]"; + } else { + newFormatTuples[i] = ""; + } + } + } + return newFormatTuples; + } + + /** + * Returns a IPersonalAttributeList of the complex attributes in this map. + * + * @return an IPersonalAttributeList of the complex attributes contained in this map. + */ + public IPersonalAttributeList getComplexAttributes() { + LOG.info("get complex attributes"); + IPersonalAttributeList attrList = new PersonalAttributeList(); + for(PersonalAttribute attr: this) { + if(!attr.getComplexValue().isEmpty()) { + attrList.put(attr.getName(), attr); + LOG.info("adding complex attribute:"+attr.getName()); + } + } + return attrList; + } + + /** + * Returns a IPersonalAttributeList of the mandatory attributes in this map. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map. + */ + public IPersonalAttributeList getSimpleValueAttributes() { + LOG.info("get simple attributes"); + IPersonalAttributeList attrList = new PersonalAttributeList(); + for(PersonalAttribute attr: this) { + if(attr.getComplexValue().isEmpty()) { + attrList.put(attr.getName(), attr); + LOG.info("adding simple attribute:"+attr.getName()); + } + } + return attrList; + } + + + + /** + * Returns a IPersonalAttributeList of the mandatory attributes in this map. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map. + */ + public IPersonalAttributeList getMandatoryAttributes() { + return getAttributesByParam(true); + } + + + /** + * Returns a IPersonalAttributeList of the attributes in this map by parameter value. + * + * @param compareValue The boolean to get mandatory (true) or optional (false) attributes. + * + * @return an IPersonalAttributeList of the mandatory attributes contained in this map if compareValue is true or optional otherwise. + */ + private IPersonalAttributeList getAttributesByParam(final boolean compareValue) { + LOG.info("get attributes by param :"+compareValue); + IPersonalAttributeList attrList = new PersonalAttributeList(); + for(PersonalAttribute attr: this) { + if(attr.isRequired() == compareValue) { + attrList.put(attr.getName(), attr); + LOG.info("adding attribute:"+attr.getName()); + } + } + return attrList; + } + + + /** + * Returns a IPersonalAttributeList of the optional attributes in this map. + * + * @return an IPersonalAttributeList of the optional attributes contained in this map. + */ + public IPersonalAttributeList getOptionalAttributes() { + return getAttributesByParam(false); + } + + /** + * {@inheritDoc} + */ + public boolean hasMissingValues() { + for(PersonalAttribute attr: this) { + if(attr.isEmptyValue() && attr.isEmptyComplexValue()) { + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryRequest.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryRequest.java new file mode 100644 index 000000000..65936f1a8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryRequest.java @@ -0,0 +1,447 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +import org.apache.log4j.Logger; + +public class STORKAttrQueryRequest implements Serializable, Cloneable { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 4778480781609392750L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAttrQueryRequest.class + .getName()); + + /** The samlId. */ + private String samlId; + + /** The destination. */ + private String destination; + + /** The assertion consumer service url. */ + private String serviceURL; + + /** The distinguished name. */ + private String distinguishedName; + + /** The e id sector share. */ + private boolean eIDSectorShare; + + /** The e id cross sector share. */ + private boolean eIDCrossSectorShare; + + /** The e id cross border share. */ + private boolean eIDCrossBorderShare; + + /** The personal attribute list. */ + private IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** The qaa. */ + private int qaa; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The service provider sector. */ + private String spSector; + + /** The service provider institution. */ + private String spInstitution; + + /** The service provider application. */ + private String spApplication; + + /** The service provider country. */ + private String spCountry; + + /** The country. */ + private String country; + + /** The citizen country code. */ + private String citizenCountry; + + /** The Service Provider ID. */ + private String sPID; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the SP ID. + * + * @return sPID The SP ID. + */ + public String getSPID() { + return sPID; + } + + /** + * Sets the SP ID. + * + * @param sPId The new sp samlId. + */ + public void setSPID(final String sPId) { + this.sPID = sPId; + } + + /** + * Gets the citizen country code. + * + * @return The citizen country code value. + */ + public String getCitizenCountryCode() { + return citizenCountry; + } + + /** + * Sets the citizen country code. + * + * @param countryCode the new citizen country code value. + */ + public void setCitizenCountryCode(final String countryCode) { + this.citizenCountry = countryCode; + } + + /** + * Gets the sp country. + * + * @return The sp country value. + */ + public String getSpCountry() { + return spCountry; + } + + /** + * Sets the sp country. + * + * @param sPCountry the new sp country value. + */ + public void setSpCountry(final String sPCountry) { + this.spCountry = sPCountry; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the qaa value. + * + * @return The qaa value value. + */ + public int getQaa() { + return qaa; + } + + /** + * Setter for the qaa value. + * + * @param qaaLevel The new qaa value. + */ + public void setQaa(final int qaaLevel) { + this.qaa = qaaLevel; + } + + /** + * Getter for the serviceURL value. + * + * @return The serviceURL value. + */ + public String getAssertionConsumerServiceURL() { + return serviceURL; + } + + /** + * Setter for the serviceURL value. + * + * @param newServiceURL the assertion consumer service URL. + */ + public void setAssertionConsumerServiceURL(final String newServiceURL) { + this.serviceURL = newServiceURL; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + + /** + * Getter for the attributeList value. + * + * @return The attributeList value. + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the attributeList value. + * + * @param attrList the personal attribute list value. + * + * @see IPersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + /** + * Gets the service provider sector. + * + * @return The service provider sector value. + */ + public String getSpSector() { + return spSector; + } + + /** + * Sets the service provider sector. + * + * @param samlSPSector the new service provider sector value. + */ + public void setSpSector(final String samlSPSector) { + this.spSector = samlSPSector; + } + + /** + * Gets the service provider institution. + * + * @return The service provider institution value. + */ + public String getSpInstitution() { + return spInstitution; + } + + /** + * Sets the service provider institution. + * + * @param samlSPInst the new service provider institution value. + */ + public void setSpInstitution(final String samlSPInst) { + this.spInstitution = samlSPInst; + } + + /** + * Gets the service provider application. + * + * @return The service provider application value. + */ + public String getSpApplication() { + return spApplication; + } + + /** + * Sets the service provider application. + * + * @param samlSPApp the new service provider application value. + */ + public void setSpApplication(final String samlSPApp) { + this.spApplication = samlSPApp; + } + + /** + * Checks if is eId sector share. + * + * @return true, if is eId sector share. + */ + public boolean isEIDSectorShare() { + return eIDSectorShare; + } + + /** + * Sets the eId sector share. + * + * @param eIdSectorShare the new eId sector share value. + */ + public void setEIDSectorShare(final boolean eIdSectorShare) { + this.eIDSectorShare = eIdSectorShare; + } + + /** + * Checks if is eId cross sector share. + * + * @return true, if is eId cross sector share. + */ + public boolean isEIDCrossSectorShare() { + return eIDCrossSectorShare; + } + + /** + * Sets the eId cross sector share. + * + * @param eIdCrossSectorShare the new eId cross sector share value. + */ + public void setEIDCrossSectorShare(final boolean eIdCrossSectorShare) { + this.eIDCrossSectorShare = eIdCrossSectorShare; + } + + /** + * Checks if is eId cross border share. + * + * @return true, if is eId cross border share. + */ + public boolean isEIDCrossBorderShare() { + return eIDCrossBorderShare; + } + + /** + * Sets the eId cross border share. + * + * @param eIdCrossBorderShare the new eId cross border share value. + */ + public void setEIDCrossBorderShare(final boolean eIdCrossBorderShare) { + this.eIDCrossBorderShare = eIdCrossBorderShare; + } + + /** + * Returns a copy of this STORKAttrQueryRequest instance. + * + * @return The copy of this STORKAttrQueryRequest. + * @throws CloneNotSupportedException on clone exception + */ + @Override + public Object clone() throws CloneNotSupportedException{ + STORKAttrQueryRequest storkAttrQueryReq = null; + storkAttrQueryReq = (STORKAttrQueryRequest) super.clone(); + storkAttrQueryReq.setPersonalAttributeList(getPersonalAttributeList()); + storkAttrQueryReq.setTokenSaml(getTokenSaml()); + return storkAttrQueryReq; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryResponse.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryResponse.java new file mode 100644 index 000000000..1974f4f66 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAttrQueryResponse.java @@ -0,0 +1,392 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.List; + +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.opensaml.saml2.core.Assertion; + +public class STORKAttrQueryResponse implements Serializable { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 7653893041391541235L; + + /** Response Id. */ + private String samlId; + + /** Request failed? */ + private boolean fail; + + /** Status code. */ + private String statusCode; + + /** Secondary status code. */ + private String subStatusCode; + + /** Audience restriction. */ + private transient String audienceRest; + + /** Error message. */ + private String message; + + /** Id of the request that originated this response. */ + private String inResponseTo; + + /** Expiration date. */ + private DateTime notOnOrAfter; + + /** Creation date. */ + private DateTime notBefore; + + /** The SAML token. */ + private byte[] tokenSaml = new byte[0]; + + /** Country. */ + private String country; + + /** The complete assertion **/ + private Assertion assertion; + + /** List of all assertions in response **/ + private List assertions; + + /** The complete list from all assertions **/ + private transient IPersonalAttributeList totalAttributeList = new PersonalAttributeList(); + + /** All personal attribute lists **/ + private List attributeLists; + + /** Citizen's personal attribute list. */ + private IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAttrQueryResponse.class.getName()); + + /** + * Getter for the subStatusCode. + * + * @return The subStatusCode value. + */ + public String getSubStatusCode() { + return subStatusCode; + } + + /** + * Setter for the subStatusCode. + * + * @param samlSubStatusCode the new subStatusCode value. + */ + public void setSubStatusCode(final String samlSubStatusCode) { + this.subStatusCode = samlSubStatusCode; + } + + /** + * Getter for audienceRest. + * + * @return The audienceRest value. + */ + public String getAudienceRestriction() { + return audienceRest; + } + + /** + * Setter for audienceRest. + * + * @param audRest the new audienceRest value. + */ + public void setAudienceRestriction(final String audRest) { + this.audienceRest = audRest; + } + + /** + * Getter for the samlToken. + * + * @return The samlToken value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Setter for samlToken. + * + * @param samlToken the new tokenSaml value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Getter for the country name. + * + * @return The country name value. + */ + public String getCountry() { + return country; + } + + /** + * Setter for the country name. + * + * @param cCountry the new country name value. + */ + public void setCountry(final String cCountry) { + this.country = cCountry; + } + + /** + * Getter for pal value. + * + * @return The pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the inResponseTo value. + * + * @return The inResponseTo value. + */ + public String getInResponseTo() { + return inResponseTo; + } + + /** + * Setter for the inResponseTo value. + * + * @param samlInResponseTo the new inResponseTo value. + */ + public void setInResponseTo(final String samlInResponseTo) { + this.inResponseTo = samlInResponseTo; + } + + /** + * Getter for the fail value. + * + * @return The fail value. + */ + public boolean isFail() { + return fail; + } + + /** + * Setter for the fail value. + * + * @param failVal the new fail value. + */ + public void setFail(final boolean failVal) { + this.fail = failVal; + } + + /** + * Getter for the message value. + * + * @return The message value. + */ + public String getMessage() { + return message; + } + + /** + * Setter for the message value. + * + * @param msg the new message value. + */ + public void setMessage(final String msg) { + this.message = msg; + } + + /** + * Getter for the statusCode value. + * + * @return The statusCode value. + */ + public String getStatusCode() { + return statusCode; + } + + /** + * Setter for the statusCode value. + * + * @param status the new statusCode value. + */ + public void setStatusCode(final String status) { + this.statusCode = status; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param nSamlId the new samlId value. + */ + public void setSamlId(final String nSamlId) { + this.samlId = nSamlId; + } + + /** + * Getter for the notOnOrAfter value. + * + * @return The notOnOrAfter value. + * + * @see DateTime + */ + public DateTime getNotOnOrAfter() { + return this.notOnOrAfter; + } + + /** + * Setter for the notOnOrAfter value. + * + * @param nOnOrAfter the new notOnOrAfter value. + * + * @see DateTime + */ + public void setNotOnOrAfter(final DateTime nOnOrAfter) { + this.notOnOrAfter = nOnOrAfter; + } + + /** + * Getter for the notBefore value. + * + * @return The notBefore value. + * + * @see DateTime + */ + public DateTime getNotBefore() { + return notBefore; + } + + /** + * Setter for the notBefore value. + * + * @param nBefore the new notBefore value. + * + * @see DateTime + */ + public void setNotBefore(final DateTime nBefore) { + this.notBefore = nBefore; + } + + /** Get the assertion from the response **/ + public Assertion getAssertion() { + return assertion; + } + + /** Set the assertion in the response **/ + public void setAssertion(final Assertion nAssertion) { + this.assertion = nAssertion; + } + + public void setAssertions(List newAssert) { + this.assertions = newAssert; + } + + public List getAssertions() { + return assertions; + } + + /** + * Getter for the toal pal value. + * + * @return The total pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getTotalPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) totalAttributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the total Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setTotalPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.totalAttributeList = attrList; + } + } + + /** + * Getter for personal attribute lists + * + * @return The lists + * + * @see PersonalAttributeList + */ + public List getPersonalAttributeLists() { + return attributeLists; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeLists(final List attrLists) { + if (attrLists != null) { + this.attributeLists = attrLists; + } + } + +} + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnRequest.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnRequest.java new file mode 100644 index 000000000..2354d0eb1 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnRequest.java @@ -0,0 +1,495 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; + +import org.apache.log4j.Logger; + +/** + * This class is a bean used to store the information relative to the + * STORKAuthnRequest (SAML Token Request). + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.21 $, $Date: 2011-02-17 22:44:34 $ + */ +public final class STORKAuthnRequest implements Serializable, Cloneable { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 4778480781609392750L; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAuthnRequest.class + .getName()); + + /** The samlId. */ + private String samlId; + + /** The assertion consumer service url. */ + private String serviceURL; + + /** The destination. */ + private String destination; + + /** The provider name. */ + private String providerName; + + /** The distinguished name. */ + private String distinguishedName; + + /** The e id sector share. */ + private boolean eIDSectorShare; + + /** The e id cross sector share. */ + private boolean eIDCrossSectorShare; + + /** The e id cross border share. */ + private boolean eIDCrossBorderShare; + + /** The personal attribute list. */ + private IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** The qaa. */ + private int qaa; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The service provider sector. */ + private String spSector; + + /** The service provider institution. */ + private String spInstitution; + + /** The service provider application. */ + private String spApplication; + + /** The service provider country. */ + private String spCountry; + + /** The country. */ + private String country; + + /** The citizen country code. */ + private String citizenCountry; + + /** The Service Provider ID. */ + private String sPID; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the SP ID. + * + * @return sPID The SP ID. + */ + public String getSPID() { + return sPID; + } + + /** + * Sets the SP ID. + * + * @param sPId The new sp samlId. + */ + public void setSPID(final String sPId) { + this.sPID = sPId; + } + + /** + * Gets the citizen country code. + * + * @return The citizen country code value. + */ + public String getCitizenCountryCode() { + return citizenCountry; + } + + /** + * Sets the citizen country code. + * + * @param countryCode the new citizen country code value. + */ + public void setCitizenCountryCode(final String countryCode) { + this.citizenCountry = countryCode; + } + + /** + * Gets the sp country. + * + * @return The sp country value. + */ + public String getSpCountry() { + return spCountry; + } + + /** + * Sets the sp country. + * + * @param sPCountry the new sp country value. + */ + public void setSpCountry(final String sPCountry) { + this.spCountry = sPCountry; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the qaa value. + * + * @return The qaa value value. + */ + public int getQaa() { + return qaa; + } + + /** + * Setter for the qaa value. + * + * @param qaaLevel The new qaa value. + */ + public void setQaa(final int qaaLevel) { + this.qaa = qaaLevel; + } + + /** + * Getter for the serviceURL value. + * + * @return The serviceURL value. + */ + public String getAssertionConsumerServiceURL() { + return serviceURL; + } + + /** + * Setter for the serviceURL value. + * + * @param newServiceURL the assertion consumer service URL. + */ + public void setAssertionConsumerServiceURL(final String newServiceURL) { + this.serviceURL = newServiceURL; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + /** + * Getter for the providerName value. + * + * @return The provider name value. + */ + public String getProviderName() { + return providerName; + } + + /** + * Setter for the providerName value. + * + * @param samlProvider the provider name value. + */ + public void setProviderName(final String samlProvider) { + this.providerName = samlProvider; + } + + /** + * Getter for the attributeList value. + * + * @return The attributeList value. + * + * @see IPersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the attributeList value. + * + * @param attrList the personal attribute list value. + * + * @see IPersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + /** + * Gets the service provider sector. + * + * @return The service provider sector value. + */ + public String getSpSector() { + return spSector; + } + + /** + * Sets the service provider sector. + * + * @param samlSPSector the new service provider sector value. + */ + public void setSpSector(final String samlSPSector) { + this.spSector = samlSPSector; + } + + /** + * Gets the service provider institution. + * + * @return The service provider institution value. + */ + public String getSpInstitution() { + return spInstitution; + } + + /** + * Sets the service provider institution. + * + * @param samlSPInst the new service provider institution value. + */ + public void setSpInstitution(final String samlSPInst) { + this.spInstitution = samlSPInst; + } + + /** + * Gets the service provider application. + * + * @return The service provider application value. + */ + public String getSpApplication() { + return spApplication; + } + + /** + * Sets the service provider application. + * + * @param samlSPApp the new service provider application value. + */ + public void setSpApplication(final String samlSPApp) { + this.spApplication = samlSPApp; + } + + /** + * Checks if is eId sector share. + * + * @return true, if is eId sector share. + */ + public boolean isEIDSectorShare() { + return eIDSectorShare; + } + + /** + * Sets the eId sector share. + * + * @param eIdSectorShare the new eId sector share value. + */ + public void setEIDSectorShare(final boolean eIdSectorShare) { + this.eIDSectorShare = eIdSectorShare; + } + + /** + * Checks if is eId cross sector share. + * + * @return true, if is eId cross sector share. + */ + public boolean isEIDCrossSectorShare() { + return eIDCrossSectorShare; + } + + /** + * Sets the eId cross sector share. + * + * @param eIdCrossSectorShare the new eId cross sector share value. + */ + public void setEIDCrossSectorShare(final boolean eIdCrossSectorShare) { + this.eIDCrossSectorShare = eIdCrossSectorShare; + } + + /** + * Checks if is eId cross border share. + * + * @return true, if is eId cross border share. + */ + public boolean isEIDCrossBorderShare() { + return eIDCrossBorderShare; + } + + /** + * Sets the eId cross border share. + * + * @param eIdCrossBorderShare the new eId cross border share value. + */ + public void setEIDCrossBorderShare(final boolean eIdCrossBorderShare) { + this.eIDCrossBorderShare = eIdCrossBorderShare; + } + + /** + * Returns a copy of this STORKAuthnRequest instance. + * + * @return The copy of this STORKAuthnRequest. + * @throws CloneNotSupportedException on clone exception + */ + @Override + public Object clone() throws CloneNotSupportedException{ + STORKAuthnRequest storkAuthnReq = null; + try { + storkAuthnReq = (STORKAuthnRequest) super.clone(); + storkAuthnReq.setPersonalAttributeList(getPersonalAttributeList()); + storkAuthnReq.setTokenSaml(getTokenSaml()); + } catch (final CloneNotSupportedException e) { + // assert false; + LOG.trace("[PersonalAttribute] Nothing to do."); + } + + return storkAuthnReq; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnResponse.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnResponse.java new file mode 100644 index 000000000..c4a3e2b6c --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKAuthnResponse.java @@ -0,0 +1,387 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +import java.io.Serializable; +import java.util.List; + +import org.apache.log4j.Logger; +import org.joda.time.DateTime; +import org.opensaml.saml2.core.Assertion; + +/** + * This class is a bean used to store the information relative to the + * STORKAuthnResponse. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.15 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class STORKAuthnResponse implements Serializable { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = -9100982727074068660L; + + /** Response Id. */ + private String samlId; + + /** Authentication failed? */ + private boolean fail; + + /** Status code. */ + private String statusCode; + + /** Secondary status code. */ + private String subStatusCode; + + /** Audience restriction. */ + private transient String audienceRest; + + /** Error message. */ + private String message; + + /** Id of the request that originated this response. */ + private String inResponseTo; + + /** Expiration date. */ + private DateTime notOnOrAfter; + + /** Creation date. */ + private DateTime notBefore; + + /** The SAML token. */ + private byte[] tokenSaml = new byte[0]; + + /** Country. */ + private String country; + + /** Citizen's personal attribute list. */ + private IPersonalAttributeList attributeList = new PersonalAttributeList(); + + /** List of all assertions in response **/ + private List assertions; + + /** The complete list from all assertions **/ + private transient IPersonalAttributeList totalAttributeList = new PersonalAttributeList(); + + /** All personal attribute lists **/ + private List attributeLists; + + /** + * Logger object. + */ + private static final Logger LOG = Logger.getLogger(STORKAuthnResponse.class.getName()); + + /** + * Getter for the subStatusCode. + * + * @return The subStatusCode value. + */ + public String getSubStatusCode() { + return subStatusCode; + } + + /** + * Setter for the subStatusCode. + * + * @param samlSubStatusCode the new subStatusCode value. + */ + public void setSubStatusCode(final String samlSubStatusCode) { + this.subStatusCode = samlSubStatusCode; + } + + /** + * Getter for audienceRest. + * + * @return The audienceRest value. + */ + public String getAudienceRestriction() { + return audienceRest; + } + + /** + * Setter for audienceRest. + * + * @param audRest the new audienceRest value. + */ + public void setAudienceRestriction(final String audRest) { + this.audienceRest = audRest; + } + + /** + * Getter for the samlToken. + * + * @return The samlToken value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Setter for samlToken. + * + * @param samlToken the new tokenSaml value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Getter for the country name. + * + * @return The country name value. + */ + public String getCountry() { + return country; + } + + /** + * Setter for the country name. + * + * @param cCountry the new country name value. + */ + public void setCountry(final String cCountry) { + this.country = cCountry; + } + + /** + * Getter for pal value. + * + * @return The pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) attributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.attributeList = attrList; + } + } + + /** + * Getter for the inResponseTo value. + * + * @return The inResponseTo value. + */ + public String getInResponseTo() { + return inResponseTo; + } + + /** + * Setter for the inResponseTo value. + * + * @param samlInResponseTo the new inResponseTo value. + */ + public void setInResponseTo(final String samlInResponseTo) { + this.inResponseTo = samlInResponseTo; + } + + /** + * Getter for the fail value. + * + * @return The fail value. + */ + public boolean isFail() { + return fail; + } + + /** + * Setter for the fail value. + * + * @param failVal the new fail value. + */ + public void setFail(final boolean failVal) { + this.fail = failVal; + } + + /** + * Getter for the message value. + * + * @return The message value. + */ + public String getMessage() { + return message; + } + + /** + * Setter for the message value. + * + * @param msg the new message value. + */ + public void setMessage(final String msg) { + this.message = msg; + } + + /** + * Getter for the statusCode value. + * + * @return The statusCode value. + */ + public String getStatusCode() { + return statusCode; + } + + /** + * Setter for the statusCode value. + * + * @param status the new statusCode value. + */ + public void setStatusCode(final String status) { + this.statusCode = status; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param nSamlId the new samlId value. + */ + public void setSamlId(final String nSamlId) { + this.samlId = nSamlId; + } + + /** + * Getter for the notOnOrAfter value. + * + * @return The notOnOrAfter value. + * + * @see DateTime + */ + public DateTime getNotOnOrAfter() { + return this.notOnOrAfter; + } + + /** + * Setter for the notOnOrAfter value. + * + * @param nOnOrAfter the new notOnOrAfter value. + * + * @see DateTime + */ + public void setNotOnOrAfter(final DateTime nOnOrAfter) { + this.notOnOrAfter = nOnOrAfter; + } + + /** + * Getter for the notBefore value. + * + * @return The notBefore value. + * + * @see DateTime + */ + public DateTime getNotBefore() { + return notBefore; + } + + /** + * Setter for the notBefore value. + * + * @param nBefore the new notBefore value. + * + * @see DateTime + */ + public void setNotBefore(final DateTime nBefore) { + this.notBefore = nBefore; + } + + public void setAssertions(List newAssert) { + this.assertions = newAssert; + } + + public List getAssertions() { + return assertions; + } + + /** + * Getter for the toal pal value. + * + * @return The total pal value. + * + * @see PersonalAttributeList + */ + public IPersonalAttributeList getTotalPersonalAttributeList() { + IPersonalAttributeList personnalAttributeList = null; + try { + personnalAttributeList = (IPersonalAttributeList) totalAttributeList.clone(); + } catch (CloneNotSupportedException e1) { + LOG.trace("[PersonalAttribute] Nothing to do."); + } + return personnalAttributeList; + } + + /** + * Setter for the total Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setTotalPersonalAttributeList(final IPersonalAttributeList attrList) { + if (attrList != null) { + this.totalAttributeList = attrList; + } + } + + /** + * Getter for personal attribute lists + * + * @return The lists + * + * @see PersonalAttributeList + */ + public List getPersonalAttributeLists() { + return attributeLists; + } + + /** + * Setter for the Personal Attribute List value. + * + * @param attrList the new value. + * + * @see PersonalAttributeList + */ + public void setPersonalAttributeLists(final List attrLists) { + if (attrLists != null) { + this.attributeLists = attrLists; + } + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutRequest.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutRequest.java new file mode 100644 index 000000000..44811aee2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutRequest.java @@ -0,0 +1,197 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +public class STORKLogoutRequest implements Serializable, Cloneable { + private static final long serialVersionUID = 4778480781609392750L; + + /** The samlId. */ + private String samlId; + + /** The destination. */ + private String destination; + + /** The distinguished name. */ + private String distinguishedName; + + /** The qaa. */ + private int qaa; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The country. */ + private String country; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** The ID of principal as known to SP **/ + private String spProvidedId; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the qaa value. + * + * @return The qaa value value. + */ + public int getQaa() { + return qaa; + } + + /** + * Setter for the qaa value. + * + * @param qaaLevel The new qaa value. + */ + public void setQaa(final int qaaLevel) { + this.qaa = qaaLevel; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + /** Getter for spProvidedId **/ + public String getSpProvidedId() { + return spProvidedId; + } + + public void setSpProvidedId(final String nSpProvidedId) { + this.spProvidedId = nSpProvidedId; + } + + @Override + public Object clone() throws CloneNotSupportedException{ + STORKLogoutRequest storkLogoutRequest = null; + storkLogoutRequest = (STORKLogoutRequest) super.clone(); + storkLogoutRequest.setTokenSaml(getTokenSaml()); + return storkLogoutRequest; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutResponse.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutResponse.java new file mode 100644 index 000000000..21b53a652 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKLogoutResponse.java @@ -0,0 +1,250 @@ +package eu.stork.peps.auth.commons; + +import java.io.Serializable; + +public class STORKLogoutResponse implements Serializable, Cloneable { + private static final long serialVersionUID = 4778480781609392750L; + + /** The samlId. */ + private String samlId; + + /** The destination. */ + private String destination; + + /** The distinguished name. */ + private String distinguishedName; + + /** The token saml. */ + private byte[] tokenSaml = new byte[0]; + + /** The issuer. */ + private String issuer; + + /** The country. */ + private String country; + + /** The Alias used at the keystore for saving this certificate. */ + private String alias; + + /** Status code. */ + private String statusCode; + + /** Secondary status code. */ + private String subStatusCode; + + /** Status message. */ + private String statusMessage; + + /** Logout failed? */ + private boolean fail; + + /** + * Gets the SP's Certificate Alias. + * + * @return alias The SP's Certificate Alias. + */ + public String getAlias() { + return alias; + } + + /** + * Sets the SP's Certificate Alias. + * + * @param nAlias The SP's Certificate Alias. + */ + public void setAlias(final String nAlias) { + this.alias = nAlias; + } + + /** + * Gets the issuer. + * + * @return The issuer value. + */ + public String getIssuer() { + return issuer; + } + + /** + * Sets the issuer. + * + * @param samlIssuer the new issuer value. + */ + public void setIssuer(final String samlIssuer) { + this.issuer = samlIssuer; + } + + /** + * Gets the SAML Token. + * + * @return The SAML Token value. + */ + public byte[] getTokenSaml() { + return tokenSaml.clone(); + } + + /** + * Sets the SAML Token. + * + * @param samlToken The new SAML Token value. + */ + public void setTokenSaml(final byte[] samlToken) { + if (samlToken != null) { + this.tokenSaml = samlToken.clone(); + } + } + + /** + * Gets the country. + * + * @return The country value. + */ + public String getCountry() { + return country; + } + + /** + * Sets the country. + * + * @param nCountry the new country value. + */ + public void setCountry(final String nCountry) { + this.country = nCountry; + } + + /** + * Getter for the destination value. + * + * @return The destination value. + */ + public String getDestination() { + return destination; + } + + /** + * Setter for the destination value. + * + * @param detination the new destination value. + */ + public void setDestination(final String detination) { + this.destination = detination; + } + + /** + * Getter for the samlId value. + * + * @return The samlId value. + */ + public String getSamlId() { + return samlId; + } + + /** + * Setter for the samlId value. + * + * @param newSamlId the new samlId value. + */ + public void setSamlId(final String newSamlId) { + this.samlId = newSamlId; + } + + /** + * Getter for the distinguishedName value. + * + * @return The distinguishedName value. + */ + public String getDistinguishedName() { + return distinguishedName; + } + + /** + * Setter for the distinguishedName value. + * + * @param certDN the distinguished name value. + */ + public void setDistinguishedName(final String certDN) { + this.distinguishedName = certDN; + } + + + /** + * Getter for the fail value. + * + * @return The fail value. + */ + public boolean isFail() { + return fail; + } + + /** + * Setter for the fail value. + * + * @param failVal the new fail value. + */ + public void setFail(final boolean failVal) { + this.fail = failVal; + } + + /** + * Getter for the statusCode value. + * + * @return The statusCode value. + */ + public String getStatusCode() { + return statusCode; + } + + /** + * Getter for the subStatusCode. + * + * @return The subStatusCode value. + */ + public String getSubStatusCode() { + return subStatusCode; + } + + /** + * Setter for the subStatusCode. + * + * @param samlSubStatusCode the new subStatusCode value. + */ + public void setSubStatusCode(final String samlSubStatusCode) { + this.subStatusCode = samlSubStatusCode; + } + + /** + * Setter for the statusMessage value. + * + * @param status the new statusMessage value. + */ + public void setStatusMessage(final String status) { + this.statusMessage = status; + } + + /** + * Getter for the statusMessage value. + * + * @return The statusMessage value. + */ + public String getStatusMessage() { + return statusMessage; + } + + /** + * Setter for the statusCode value. + * + * @param status the new statusCode value. + */ + public void setStatusCode(final String status) { + this.statusCode = status; + } + + @Override + public Object clone() throws CloneNotSupportedException{ + STORKLogoutResponse storkLogoutResponse = null; + storkLogoutResponse = (STORKLogoutResponse) super.clone(); + storkLogoutResponse.setTokenSaml(getTokenSaml()); + return storkLogoutResponse; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKStatusCode.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKStatusCode.java new file mode 100644 index 000000000..a9c4a156b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKStatusCode.java @@ -0,0 +1,68 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains the SAML Token Status Code. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2010-11-17 05:15:28 $ + */ +public enum STORKStatusCode { + + /** URI for Requester status code. */ + REQUESTER_URI("urn:oasis:names:tc:SAML:2.0:status:Requester"), + + /** URI for Responder status code. */ + RESPONDER_URI("urn:oasis:names:tc:SAML:2.0:status:Responder"), + + /** URI for Success status code. */ + SUCCESS_URI("urn:oasis:names:tc:SAML:2.0:status:Success"), + + /** Attribute is Available. */ + STATUS_AVAILABLE("Available"), + + /** Attribute is NotAvailable. */ + STATUS_NOT_AVAILABLE("NotAvailable"), + + /** Attribute is Withheld. */ + STATUS_WITHHELD("Withheld"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param val The Constant value. + */ + private STORKStatusCode(final String val) { + + this.value = val; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + + return value; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKSubStatusCode.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKSubStatusCode.java new file mode 100644 index 000000000..0a711c9b7 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/STORKSubStatusCode.java @@ -0,0 +1,71 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons; + +/** + * This enum class contains the SAML Token Sub Status Code. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.7 $, $Date: 2010-11-17 05:15:28 $ + */ +public enum STORKSubStatusCode { + + /** URI for AuthnFailed status code. */ + AUTHN_FAILED_URI("urn:oasis:names:tc:SAML:2.0:status:AuthnFailed"), + + /** URI for InvalidAttrNameOrValue status code. */ + INVALID_ATTR_NAME_VALUE_URI( + "urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue"), + + /** URI for InvalidNameIDPolicy status code. */ + INVALID_NAMEID_POLICY_URI( + "urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy"), + + /** URI for VersionMismatch status code. */ + VERSION_MISMATCH_URI("urn:oasis:names:tc:SAML:2.0:status:VersionMismatch"), + + /** URI for RequestDenied status code. */ + REQUEST_DENIED_URI("urn:oasis:names:tc:SAML:2.0:status:RequestDenied"), + + /** URI for QaaNotSupported status code. */ + QAA_NOT_SUPPORTED( + "http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported"); + + /** + * Represents the constant's value. + */ + private String value; + + /** + * Solo Constructor. + * + * @param val The Constant value. + */ + private STORKSubStatusCode(final String val) { + + this.value = val; + } + + /** + * Return the Constant Value. + * + * @return The constant value. + */ + public String toString() { + + return value; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/all-wcprops new file mode 100644 index 000000000..14f05b17c --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/all-wcprops @@ -0,0 +1,53 @@ +K 25 +svn:wc:ra_dav:version-url +V 96 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions +END +InvalidParameterPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 131 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidParameterPEPSException.java +END +SecurityPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 123 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/SecurityPEPSException.java +END +InvalidSessionPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 129 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidSessionPEPSException.java +END +package-info.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/package-info.java +END +CPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 116 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/CPEPSException.java +END +StorkPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 120 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/StorkPEPSException.java +END +AbstractPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 123 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/AbstractPEPSException.java +END +InternalErrorPEPSException.java +K 25 +svn:wc:ra_dav:version-url +V 128 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InternalErrorPEPSException.java +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/entries new file mode 100644 index 000000000..8ca1e325f --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/entries @@ -0,0 +1,300 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps/auth/commons/exceptions +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +CPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +5d3cb4a7303baeaf2104aaa7da301b21 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +3570 + +StorkPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +fea01f750728ea5f15b449acb517f4b2 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1690 + +AbstractPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +c9aedb030e6dbc9f002c7cd3d52cf03f +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +4422 + +InternalErrorPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +36d8f6310e84c550f65bef78d5dc4238 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +2471 + +InvalidParameterPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +c6ad53378b03a346ca0fc48a381ed771 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1800 + +SecurityPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +78d50b78a69cb0c630e4e14420e3b7be +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +2199 + +InvalidSessionPEPSException.java +file + + + + +2013-12-20T12:27:56.626475Z +5fd7f04ad6f6cc121084e682b2a4e678 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1555 + +package-info.java +file + + + + +2013-12-20T12:27:56.626475Z +7055c01b74382c525c7fcf110646d8fc +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +129 + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/AbstractPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/AbstractPEPSException.java.svn-base new file mode 100644 index 000000000..e9a96d7c2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/AbstractPEPSException.java.svn-base @@ -0,0 +1,173 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +import java.io.Serializable; + +/** + * Abstract class to represent the various PEPS exceptions. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2010-11-17 05:15:28 $ + */ +public abstract class AbstractPEPSException extends RuntimeException implements + Serializable { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = -1884417567740138022L; + + /** + * Error code. + */ + private String errorCode; + + /** + * Error message. + */ + private String errorMessage; + + /** + * SAML token. + */ + private String samlTokenFail; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param code The error code value. + * @param message The error message value. + */ + public AbstractPEPSException(final String code, final String message) { + + super(message); + this.errorCode = code; + this.errorMessage = message; + } + + /** + * Exception Constructor with the errorMessage as parameters and the Throwable + * cause. + * + * @param message The error message value. + * @param cause The throwable object. + */ + public AbstractPEPSException(final String message, final Throwable cause) { + + super(message, cause); + this.errorMessage = message; + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters and the Throwable cause. + * + * @param code The error code value. + * @param message The error message value. + * @param cause The throwable object. + */ + public AbstractPEPSException(final String code, final String message, + final Throwable cause) { + + super(message, cause); + this.errorCode = code; + this.errorMessage = message; + } + + /** + * Exception Constructor with three Strings representing the errorCode, + * errorMessage and encoded samlToken as parameters. + * + * @param code The error code value. + * @param message The error message value. + * @param samlToken The error SAML Token. + */ + public AbstractPEPSException(final String code, final String message, + final String samlToken) { + + super(message); + this.errorCode = code; + this.errorMessage = message; + this.samlTokenFail = samlToken; + } + + /** + * Constructor with SAML Token as argument. Error message and error code are + * embedded in the SAML. + * + * @param samlToken The error SAML Token. + */ + public AbstractPEPSException(final String samlToken) { + super(); + this.samlTokenFail = samlToken; + } + + /** + * Getter for errorCode. + * + * @return The errorCode value. + */ + public final String getErrorCode() { + return errorCode; + } + + /** + * Setter for errorCode. + * + * @param code The error code value. + */ + public final void setErrorCode(final String code) { + this.errorCode = code; + } + + /** + * Getter for errorMessage. + * + * @return The error Message value. + */ + public final String getErrorMessage() { + return errorMessage; + } + + /** + * Setter for errorMessage. + * + * @param message The error message value. + */ + public final void setErrorMessage(final String message) { + this.errorMessage = message; + } + + /** + * Getter for SAMLTokenFail. + * + * @return The error SAML Token. + */ + public final String getSamlTokenFail() { + return samlTokenFail; + } + + /** + * Setter for SAMLTokenFail. + * + * @param samlToken The error SAML token. + */ + public final void setSamlTokenFail(final String samlToken) { + this.samlTokenFail = samlToken; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/CPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/CPEPSException.java.svn-base new file mode 100644 index 000000000..69cb20fdd --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/CPEPSException.java.svn-base @@ -0,0 +1,143 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * This exception is thrown by the C-PEPS service and holds the relative + * information to present to the citizen. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.9 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class CPEPSException extends RuntimeException { + + /** + * Serial id. + */ + private static final long serialVersionUID = -4012295047127999362L; + + /** + * Error code. + */ + private String errorCode; + + /** + * Error message. + */ + private String errorMessage; + + /** + * SAML token. + */ + private String samlTokenFail; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param samlToken The SAML Token. + * @param code The error code value. + * @param message The error message value. + */ + public CPEPSException(final String samlToken, final String code, + final String message) { + + super(message); + this.setErrorCode(code); + this.setErrorMessage(message); + this.setSamlTokenFail(samlToken); + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param samlToken The SAML Token. + * @param code The error code value. + * @param message The error message value. + * @param cause The original exception; + */ + public CPEPSException(final String samlToken, final String code, + final String message, final Throwable cause) { + + super(message, cause); + this.setErrorCode(code); + this.setErrorMessage(message); + this.setSamlTokenFail(samlToken); + } + + /** + * {@inheritDoc} + */ + public String getMessage() { + return this.getErrorMessage() + " (" + this.getErrorCode() + ")"; + } + + /** + * Getter for the error code. + * + * @return The errorCode value. + */ + public String getErrorCode() { + return errorCode; + } + + /** + * Setter for the error code. + * + * @param code The error code. + */ + public void setErrorCode(final String code) { + this.errorCode = code; + } + + /** + * Getter for the error message. + * + * @return The errorMessage value. + */ + public String getErrorMessage() { + return errorMessage; + } + + /** + * Setter for the error message. + * + * @param message The error message. + */ + public void setErrorMessage(final String message) { + this.errorMessage = message; + } + + /** + * Getter for the samlTokenFail. + * + * @return The samlTokenFail value. + */ + public String getSamlTokenFail() { + return samlTokenFail; + } + + /** + * Setter for the samlTokenFail. + * + * @param samlToken The error Saml Token. + */ + public void setSamlTokenFail(final String samlToken) { + this.samlTokenFail = samlToken; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InternalErrorPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InternalErrorPEPSException.java.svn-base new file mode 100644 index 000000000..67514d4fe --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InternalErrorPEPSException.java.svn-base @@ -0,0 +1,74 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Internal Error Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2010-11-17 05:15:28 $ + * + * @see AbstractPEPSException + */ +public final class InternalErrorPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 1193001455410319795L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters and the Throwable cause. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + * @param cause The throwable object. + */ + public InternalErrorPEPSException(final String errorCode, + final String errorMessage, final Throwable cause) { + + super(errorCode, errorMessage, cause); + } + + /** + * Exception Constructor with three strings representing the errorCode, + * errorMessage and encoded samlToken as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + * @param samlTokenFail The error SAML Token. + */ + public InternalErrorPEPSException(final String errorCode, + final String errorMessage, final String samlTokenFail) { + + super(errorCode, errorMessage, samlTokenFail); + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + */ + public InternalErrorPEPSException(final String errorCode, + final String errorMessage) { + + super(errorCode, errorMessage); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidParameterPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidParameterPEPSException.java.svn-base new file mode 100644 index 000000000..12c83b589 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidParameterPEPSException.java.svn-base @@ -0,0 +1,54 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Invalid Parameter Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.11 $, $Date: 2010-11-17 05:15:28 $ + * + * @see InvalidParameterPEPSException + */ +public class InvalidParameterPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 2046282148740524875L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error code message value. + */ + public InvalidParameterPEPSException(final String errorCode, + final String errorMessage) { + super(errorCode, errorMessage); + } + + /** + * Exception Constructor with one String representing the encoded samlToken. + * + * @param samlTokenFail The error SAML Token. + */ + public InvalidParameterPEPSException(final String samlTokenFail) { + super(samlTokenFail); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidSessionPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidSessionPEPSException.java.svn-base new file mode 100644 index 000000000..800525eee --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/InvalidSessionPEPSException.java.svn-base @@ -0,0 +1,46 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Invalid session Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.14 $, $Date: 2010-11-17 05:15:28 $ + * + * @see InvalidParameterPEPSException + */ +public class InvalidSessionPEPSException extends InvalidParameterPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 7147090160978319016L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + */ + public InvalidSessionPEPSException(final String errorCode, + final String errorMessage) { + + super(errorCode, errorMessage); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/SecurityPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/SecurityPEPSException.java.svn-base new file mode 100644 index 000000000..fc27371d2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/SecurityPEPSException.java.svn-base @@ -0,0 +1,67 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Security PEPS Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.18 $, $Date: 2010-11-17 05:15:28 $ + * + * @see AbstractPEPSException + */ +public final class SecurityPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 5605743302478554967L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMsg The error message value. + */ + public SecurityPEPSException(final String errorCode, final String errorMsg) { + super(errorCode, errorMsg); + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters and the Throwable cause. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + * @param cause The throwable object. + */ + public SecurityPEPSException(final String errorCode, + final String errorMessage, final Throwable cause) { + + super(errorCode, errorMessage, cause); + } + + /** + * Exception Constructor with one String representing the encoded samlToken. + * + * @param samlTokenFail The error SAML Token. + */ + public SecurityPEPSException(final String samlTokenFail) { + super(samlTokenFail); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/StorkPEPSException.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/StorkPEPSException.java.svn-base new file mode 100644 index 000000000..a2da61a02 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/StorkPEPSException.java.svn-base @@ -0,0 +1,53 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Security PEPS Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.15 $, $Date: 2010-11-17 05:15:28 $ + * + * @see AbstractPEPSException + */ +public final class StorkPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 8048033129798427574L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMsg The error message value. + */ + public StorkPEPSException(final String errorCode, final String errorMsg) { + super(errorCode, errorMsg); + } + + /** + * {@inheritDoc} + */ + public String getMessage() { + + return "Security Error (" + this.getErrorCode() + ") processing request : " + + this.getErrorMessage(); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/package-info.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/package-info.java.svn-base new file mode 100644 index 000000000..d83068beb --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/.svn/text-base/package-info.java.svn-base @@ -0,0 +1,7 @@ +/** + * Package for the PEPS’ Exceptions handling. + * + * @since 1.0 + */ +package eu.stork.peps.auth.commons.exceptions; + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/AbstractPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/AbstractPEPSException.java new file mode 100644 index 000000000..e9a96d7c2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/AbstractPEPSException.java @@ -0,0 +1,173 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +import java.io.Serializable; + +/** + * Abstract class to represent the various PEPS exceptions. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2010-11-17 05:15:28 $ + */ +public abstract class AbstractPEPSException extends RuntimeException implements + Serializable { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = -1884417567740138022L; + + /** + * Error code. + */ + private String errorCode; + + /** + * Error message. + */ + private String errorMessage; + + /** + * SAML token. + */ + private String samlTokenFail; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param code The error code value. + * @param message The error message value. + */ + public AbstractPEPSException(final String code, final String message) { + + super(message); + this.errorCode = code; + this.errorMessage = message; + } + + /** + * Exception Constructor with the errorMessage as parameters and the Throwable + * cause. + * + * @param message The error message value. + * @param cause The throwable object. + */ + public AbstractPEPSException(final String message, final Throwable cause) { + + super(message, cause); + this.errorMessage = message; + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters and the Throwable cause. + * + * @param code The error code value. + * @param message The error message value. + * @param cause The throwable object. + */ + public AbstractPEPSException(final String code, final String message, + final Throwable cause) { + + super(message, cause); + this.errorCode = code; + this.errorMessage = message; + } + + /** + * Exception Constructor with three Strings representing the errorCode, + * errorMessage and encoded samlToken as parameters. + * + * @param code The error code value. + * @param message The error message value. + * @param samlToken The error SAML Token. + */ + public AbstractPEPSException(final String code, final String message, + final String samlToken) { + + super(message); + this.errorCode = code; + this.errorMessage = message; + this.samlTokenFail = samlToken; + } + + /** + * Constructor with SAML Token as argument. Error message and error code are + * embedded in the SAML. + * + * @param samlToken The error SAML Token. + */ + public AbstractPEPSException(final String samlToken) { + super(); + this.samlTokenFail = samlToken; + } + + /** + * Getter for errorCode. + * + * @return The errorCode value. + */ + public final String getErrorCode() { + return errorCode; + } + + /** + * Setter for errorCode. + * + * @param code The error code value. + */ + public final void setErrorCode(final String code) { + this.errorCode = code; + } + + /** + * Getter for errorMessage. + * + * @return The error Message value. + */ + public final String getErrorMessage() { + return errorMessage; + } + + /** + * Setter for errorMessage. + * + * @param message The error message value. + */ + public final void setErrorMessage(final String message) { + this.errorMessage = message; + } + + /** + * Getter for SAMLTokenFail. + * + * @return The error SAML Token. + */ + public final String getSamlTokenFail() { + return samlTokenFail; + } + + /** + * Setter for SAMLTokenFail. + * + * @param samlToken The error SAML token. + */ + public final void setSamlTokenFail(final String samlToken) { + this.samlTokenFail = samlToken; + } +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/CPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/CPEPSException.java new file mode 100644 index 000000000..69cb20fdd --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/CPEPSException.java @@ -0,0 +1,143 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * This exception is thrown by the C-PEPS service and holds the relative + * information to present to the citizen. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.9 $, $Date: 2010-11-17 05:15:28 $ + */ +public final class CPEPSException extends RuntimeException { + + /** + * Serial id. + */ + private static final long serialVersionUID = -4012295047127999362L; + + /** + * Error code. + */ + private String errorCode; + + /** + * Error message. + */ + private String errorMessage; + + /** + * SAML token. + */ + private String samlTokenFail; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param samlToken The SAML Token. + * @param code The error code value. + * @param message The error message value. + */ + public CPEPSException(final String samlToken, final String code, + final String message) { + + super(message); + this.setErrorCode(code); + this.setErrorMessage(message); + this.setSamlTokenFail(samlToken); + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param samlToken The SAML Token. + * @param code The error code value. + * @param message The error message value. + * @param cause The original exception; + */ + public CPEPSException(final String samlToken, final String code, + final String message, final Throwable cause) { + + super(message, cause); + this.setErrorCode(code); + this.setErrorMessage(message); + this.setSamlTokenFail(samlToken); + } + + /** + * {@inheritDoc} + */ + public String getMessage() { + return this.getErrorMessage() + " (" + this.getErrorCode() + ")"; + } + + /** + * Getter for the error code. + * + * @return The errorCode value. + */ + public String getErrorCode() { + return errorCode; + } + + /** + * Setter for the error code. + * + * @param code The error code. + */ + public void setErrorCode(final String code) { + this.errorCode = code; + } + + /** + * Getter for the error message. + * + * @return The errorMessage value. + */ + public String getErrorMessage() { + return errorMessage; + } + + /** + * Setter for the error message. + * + * @param message The error message. + */ + public void setErrorMessage(final String message) { + this.errorMessage = message; + } + + /** + * Getter for the samlTokenFail. + * + * @return The samlTokenFail value. + */ + public String getSamlTokenFail() { + return samlTokenFail; + } + + /** + * Setter for the samlTokenFail. + * + * @param samlToken The error Saml Token. + */ + public void setSamlTokenFail(final String samlToken) { + this.samlTokenFail = samlToken; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InternalErrorPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InternalErrorPEPSException.java new file mode 100644 index 000000000..67514d4fe --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InternalErrorPEPSException.java @@ -0,0 +1,74 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Internal Error Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.13 $, $Date: 2010-11-17 05:15:28 $ + * + * @see AbstractPEPSException + */ +public final class InternalErrorPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 1193001455410319795L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters and the Throwable cause. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + * @param cause The throwable object. + */ + public InternalErrorPEPSException(final String errorCode, + final String errorMessage, final Throwable cause) { + + super(errorCode, errorMessage, cause); + } + + /** + * Exception Constructor with three strings representing the errorCode, + * errorMessage and encoded samlToken as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + * @param samlTokenFail The error SAML Token. + */ + public InternalErrorPEPSException(final String errorCode, + final String errorMessage, final String samlTokenFail) { + + super(errorCode, errorMessage, samlTokenFail); + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + */ + public InternalErrorPEPSException(final String errorCode, + final String errorMessage) { + + super(errorCode, errorMessage); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidParameterPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidParameterPEPSException.java new file mode 100644 index 000000000..12c83b589 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidParameterPEPSException.java @@ -0,0 +1,54 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Invalid Parameter Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.11 $, $Date: 2010-11-17 05:15:28 $ + * + * @see InvalidParameterPEPSException + */ +public class InvalidParameterPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 2046282148740524875L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error code message value. + */ + public InvalidParameterPEPSException(final String errorCode, + final String errorMessage) { + super(errorCode, errorMessage); + } + + /** + * Exception Constructor with one String representing the encoded samlToken. + * + * @param samlTokenFail The error SAML Token. + */ + public InvalidParameterPEPSException(final String samlTokenFail) { + super(samlTokenFail); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidSessionPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidSessionPEPSException.java new file mode 100644 index 000000000..800525eee --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/InvalidSessionPEPSException.java @@ -0,0 +1,46 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Invalid session Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.14 $, $Date: 2010-11-17 05:15:28 $ + * + * @see InvalidParameterPEPSException + */ +public class InvalidSessionPEPSException extends InvalidParameterPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 7147090160978319016L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + */ + public InvalidSessionPEPSException(final String errorCode, + final String errorMessage) { + + super(errorCode, errorMessage); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/SecurityPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/SecurityPEPSException.java new file mode 100644 index 000000000..fc27371d2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/SecurityPEPSException.java @@ -0,0 +1,67 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Security PEPS Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.18 $, $Date: 2010-11-17 05:15:28 $ + * + * @see AbstractPEPSException + */ +public final class SecurityPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 5605743302478554967L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMsg The error message value. + */ + public SecurityPEPSException(final String errorCode, final String errorMsg) { + super(errorCode, errorMsg); + } + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters and the Throwable cause. + * + * @param errorCode The error code value. + * @param errorMessage The error message value. + * @param cause The throwable object. + */ + public SecurityPEPSException(final String errorCode, + final String errorMessage, final Throwable cause) { + + super(errorCode, errorMessage, cause); + } + + /** + * Exception Constructor with one String representing the encoded samlToken. + * + * @param samlTokenFail The error SAML Token. + */ + public SecurityPEPSException(final String samlTokenFail) { + super(samlTokenFail); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/StorkPEPSException.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/StorkPEPSException.java new file mode 100644 index 000000000..a2da61a02 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/StorkPEPSException.java @@ -0,0 +1,53 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.commons.exceptions; + +/** + * Security PEPS Exception class. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.15 $, $Date: 2010-11-17 05:15:28 $ + * + * @see AbstractPEPSException + */ +public final class StorkPEPSException extends AbstractPEPSException { + + /** + * Unique identifier. + */ + private static final long serialVersionUID = 8048033129798427574L; + + /** + * Exception Constructor with two Strings representing the errorCode and + * errorMessage as parameters. + * + * @param errorCode The error code value. + * @param errorMsg The error message value. + */ + public StorkPEPSException(final String errorCode, final String errorMsg) { + super(errorCode, errorMsg); + } + + /** + * {@inheritDoc} + */ + public String getMessage() { + + return "Security Error (" + this.getErrorCode() + ") processing request : " + + this.getErrorMessage(); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/package-info.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/package-info.java new file mode 100644 index 000000000..d83068beb --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/exceptions/package-info.java @@ -0,0 +1,7 @@ +/** + * Package for the PEPS’ Exceptions handling. + * + * @since 1.0 + */ +package eu.stork.peps.auth.commons.exceptions; + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/package-info.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/package-info.java new file mode 100644 index 000000000..19d45aaa2 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/commons/package-info.java @@ -0,0 +1,9 @@ +/** + * Common Authentication Service functionalities to be deployed in every PEPS + * is contained in this package. + * In particular, it contains the SAML Engine that implements the SAML messages + * management + * + * @since 1.0 + */ +package eu.stork.peps.auth.commons; diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/all-wcprops new file mode 100644 index 000000000..3cd5d5378 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/all-wcprops @@ -0,0 +1,41 @@ +K 25 +svn:wc:ra_dav:version-url +V 87 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/specific +END +IDeriveAttribute.java +K 25 +svn:wc:ra_dav:version-url +V 108 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/specific/IDeriveAttribute.java +END +IAUService.java +K 25 +svn:wc:ra_dav:version-url +V 103 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/specific/IAUService.java +END +INormaliseValue.java +K 25 +svn:wc:ra_dav:version-url +V 107 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/specific/INormaliseValue.java +END +ITranslatorService.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/main/java/eu/stork/peps/auth/specific/ITranslatorService.java +END +package-info.java +K 25 +svn:wc:ra_dav:version-url +V 104 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/specific/package-info.java +END +ICheckAttributeValue.java +K 25 +svn:wc:ra_dav:version-url +V 112 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/java/eu/stork/peps/auth/specific/ICheckAttributeValue.java +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/entries new file mode 100644 index 000000000..acd798b61 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/entries @@ -0,0 +1,232 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps/auth/specific +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +ITranslatorService.java +file + + + + +2014-01-21T08:38:55.228702Z +c027ed5506150c744b8e586b325de5fb +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +3120 + +package-info.java +file + + + + +2013-12-20T12:27:56.654475Z +eef7721d55c2edb02a432fc08ae9e487 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +164 + +ICheckAttributeValue.java +file + + + + +2013-12-20T12:27:56.654475Z +b0472ff15d1c86f175da134b0f0eda71 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1321 + +IDeriveAttribute.java +file + + + + +2013-12-20T12:27:56.654475Z +dce3856a97583f739cdf50ca78491277 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1504 + +IAUService.java +file + + + + +2014-01-21T08:38:55.228702Z +b622aaaa29b0cd72261ca7799db691b9 +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +7023 + +INormaliseValue.java +file + + + + +2013-12-20T12:27:56.654475Z +09f6e376875762fca294be4dfecb71f1 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +1237 + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IAUService.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IAUService.java.svn-base new file mode 100644 index 000000000..5c24cc5a8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IAUService.java.svn-base @@ -0,0 +1,215 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import java.util.Map; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.IStorkSession; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.commons.STORKAuthnResponse; + +/** + * Interface for Specific Authentication methods. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface IAUService { + + /** + * Prepares the citizen to be redirected to the IdP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * @param requestAttributes The Requested attributes. + * + * @return byte[] containing a SAML Request. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + byte[] prepareCitizenAuthentication(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session); + + /** + * Prepares the citizen to be redirected to the PV. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * @param requestAttributes The Requested attributes. + * + * @return byte[] containing a SAML Request. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + byte[] preparePVRequest(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session); + + /** + * Authenticates a citizen. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param requestAttributes The requested attributes. + * + * @return The updated Personal Attribute List. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList authenticateCitizen( + IPersonalAttributeList personalList, Map parameters, + Map requestAttributes); + + /** + * Validates a power. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param requestAttributes The requested attributes. + * + * @return The updated Personal Attribute List (power validated). + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList powerValidation( + IPersonalAttributeList personalList, Map parameters, + Map requestAttributes); + + /** + * Prepares the Citizen browser to be redirected to the AP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * @param requestAttributes The requested attributes. + * + * @return true in case of no error. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + boolean prepareAPRedirect(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session); + + /** + * Returns the attributes values from the AP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param requestAttributes The request attributes. + * + * @return The updated Personal Attribute List. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList getAttributesFromAttributeProviders( + IPersonalAttributeList personalList, Map parameters, + Map requestAttributes); + + /** + * Get the attributes from the AP with verification. + * + * @param personalList The Personal Attribute List. + * @param parameters The HTTP Parameters. + * @param requestAttributes The requested Attributes. + * @param session The session object. + * @param auProcessId The SAML identifier. + * + * @return true if the attributes were correctly verified. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + boolean getAttributesWithVerification(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session, String auProcessId); + + /** + * Validates a SAML Response. + * + * @param samlToken The SAML Token. + * @param session The session object. + * + * @return the STORKAuthnResponse associated with the validated response. + * + * @see IStorkSession + */ + STORKAuthnResponse processAuthenticationResponse(byte[] samlToken, + IStorkSession session); + + /** + * Generates a SAML Response in case of error. + * + * @param inResponseTo The SAML's identifier to response. + * @param issuer The issuer value. + * @param assertionURL The assertion URL. + * @param code The error code. + * @param subcode The sub error code. + * @param message The error message. + * @param ipUserAddress The user IP address. + * + * @return byte[] containing the SAML Response. + */ + byte[] generateErrorAuthenticationResponse(String inResponseTo, + String issuer, String assertionURL, String code, String subcode, + String message, String ipUserAddress); + + /** + * Compares two given personal attribute lists. + * + * @param original The original Personal Attribute List. + * @param modified The modified Personal Attribute List. + * @return true if the original list contains the modified one. False + * otherwise. + * + * @see IPersonalAttributeList + */ + boolean comparePersonalAttributeLists(IPersonalAttributeList original, + IPersonalAttributeList modified); + + /** + * Prepares the citizen to be redirected to the AtP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * + * @return byte[] containing a SAML Request. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + byte[] prepareAttributeRequest(IPersonalAttributeList personalList, + Map parameters, IStorkSession session); + + /** + * Validates a SAML Response. + * + * @param samlToken The SAML Token. + * @param session The session object. + * + * @return the STORKAttrQueryResponse associated with the validated response. + * + * @see IStorkSession + */ + STORKAttrQueryResponse processAttributeResponse(byte[] samlToken, + IStorkSession session); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ICheckAttributeValue.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ICheckAttributeValue.java.svn-base new file mode 100644 index 000000000..31a8d78ff --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ICheckAttributeValue.java.svn-base @@ -0,0 +1,37 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import java.util.List; + +/** + * Interface that defines the methods to work with the validation of attributes. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface ICheckAttributeValue { + + /** + * Checks if the list of values contains the expected value. + * + * @param values The List of values. + * @param expectedValue The value to check if it exists on the list. + * + * @return boolean true, if the value is present in the list. False, + * otherwise. + */ + boolean checkValue(List values, String expectedValue); + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IDeriveAttribute.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IDeriveAttribute.java.svn-base new file mode 100644 index 000000000..78eb53004 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/IDeriveAttribute.java.svn-base @@ -0,0 +1,40 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import eu.stork.peps.auth.commons.IStorkSession; +import eu.stork.peps.auth.commons.PersonalAttribute; + +/** + * Interface that defines the methods to work with derivation of attributes. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface IDeriveAttribute { + + /** + * Derives the attribute value. Set the Personal Attribute value to null if + * the value in session or the value of age are invalid (non-numeric or null). + * + * @param personalAttrList The Personal Attribute List. + * @param session The session object. + * + * @see PersonalAttribute The personal Attribute + * @see IStorkSession The session object. + */ + void deriveAttributeToData(PersonalAttribute personalAttrList, + IStorkSession session); + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/INormaliseValue.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/INormaliseValue.java.svn-base new file mode 100644 index 000000000..ca2114e32 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/INormaliseValue.java.svn-base @@ -0,0 +1,35 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import eu.stork.peps.auth.commons.PersonalAttribute; + +/** + * Interface for attribute's value normalisation. + * + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface INormaliseValue { + + /** + * Translates the attribute's value from local format to STORK format. + * + * @param personalAttribute The Personal Attribute to normalise the value. + * + * @see PersonalAttribute + */ + void normaliseAttributeValueToStork(PersonalAttribute personalAttribute); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ITranslatorService.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ITranslatorService.java.svn-base new file mode 100644 index 000000000..8a33897d8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/ITranslatorService.java.svn-base @@ -0,0 +1,100 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.IStorkSession; +import eu.stork.peps.auth.commons.STORKAuthnRequest; + +/** + * Interface for attributes normalization. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface ITranslatorService { + + /** + * Translates the attributes from local format to STORK format. + * + * @param personalList The Personal Attribute List. + * + * @return The Personal Attribute List with normalised attributes. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList normaliseAttributeNamesToStork( + IPersonalAttributeList personalList); + + /** + * Translates the attributes values from local format to STORK format. + * + * @param personalList The Personal Attribute List. + * + * @return The PersonalAttributeList with normalised values. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList normaliseAttributeValuesToStork( + IPersonalAttributeList personalList); + + /** + * Translates the attributes from STORK format to local format. + * + * @param personalList The Personal Attribute List. + * + * @return The PersonalAttributeList with normalised attributes. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList normaliseAttributeNamesFromStork( + IPersonalAttributeList personalList); + + /** + * Derive Attribute Names To Stork format. + * + * @param personalList The Personal Attribute List, + * + * @return The PersonalAttributeList with derived attributes. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList deriveAttributeFromStork( + IPersonalAttributeList personalList); + + /** + * Derive Attribute Names from Stork format. + * + * @param session The session object. + * @param modifiedList The Personal Attribute List. + * + * @return The PersonalAttributeList with derived attributes. + * + * @see IStorkSession + * @see IPersonalAttributeList + */ + IPersonalAttributeList deriveAttributeToStork(IStorkSession session, + IPersonalAttributeList modifiedList); + + /** + * Validate the values of the attributes. + * + * @param pal The attribute list + * + * @return True, if all the attributes have values. False, otherwise. + * + * @see STORKAuthnRequest + */ + boolean checkAttributeValues(IPersonalAttributeList pa); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/package-info.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/package-info.java.svn-base new file mode 100644 index 000000000..a25c52311 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/.svn/text-base/package-info.java.svn-base @@ -0,0 +1,8 @@ +/** + * Specific PEPS Interfaces that implements functionality of the Authentication + * Service. + * + * @since 1.0 + */ +package eu.stork.peps.auth.specific; + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IAUService.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IAUService.java new file mode 100644 index 000000000..5c24cc5a8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IAUService.java @@ -0,0 +1,215 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import java.util.Map; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.IStorkSession; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.commons.STORKAuthnResponse; + +/** + * Interface for Specific Authentication methods. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface IAUService { + + /** + * Prepares the citizen to be redirected to the IdP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * @param requestAttributes The Requested attributes. + * + * @return byte[] containing a SAML Request. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + byte[] prepareCitizenAuthentication(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session); + + /** + * Prepares the citizen to be redirected to the PV. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * @param requestAttributes The Requested attributes. + * + * @return byte[] containing a SAML Request. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + byte[] preparePVRequest(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session); + + /** + * Authenticates a citizen. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param requestAttributes The requested attributes. + * + * @return The updated Personal Attribute List. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList authenticateCitizen( + IPersonalAttributeList personalList, Map parameters, + Map requestAttributes); + + /** + * Validates a power. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param requestAttributes The requested attributes. + * + * @return The updated Personal Attribute List (power validated). + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList powerValidation( + IPersonalAttributeList personalList, Map parameters, + Map requestAttributes); + + /** + * Prepares the Citizen browser to be redirected to the AP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * @param requestAttributes The requested attributes. + * + * @return true in case of no error. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + boolean prepareAPRedirect(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session); + + /** + * Returns the attributes values from the AP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param requestAttributes The request attributes. + * + * @return The updated Personal Attribute List. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList getAttributesFromAttributeProviders( + IPersonalAttributeList personalList, Map parameters, + Map requestAttributes); + + /** + * Get the attributes from the AP with verification. + * + * @param personalList The Personal Attribute List. + * @param parameters The HTTP Parameters. + * @param requestAttributes The requested Attributes. + * @param session The session object. + * @param auProcessId The SAML identifier. + * + * @return true if the attributes were correctly verified. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + boolean getAttributesWithVerification(IPersonalAttributeList personalList, + Map parameters, Map requestAttributes, + IStorkSession session, String auProcessId); + + /** + * Validates a SAML Response. + * + * @param samlToken The SAML Token. + * @param session The session object. + * + * @return the STORKAuthnResponse associated with the validated response. + * + * @see IStorkSession + */ + STORKAuthnResponse processAuthenticationResponse(byte[] samlToken, + IStorkSession session); + + /** + * Generates a SAML Response in case of error. + * + * @param inResponseTo The SAML's identifier to response. + * @param issuer The issuer value. + * @param assertionURL The assertion URL. + * @param code The error code. + * @param subcode The sub error code. + * @param message The error message. + * @param ipUserAddress The user IP address. + * + * @return byte[] containing the SAML Response. + */ + byte[] generateErrorAuthenticationResponse(String inResponseTo, + String issuer, String assertionURL, String code, String subcode, + String message, String ipUserAddress); + + /** + * Compares two given personal attribute lists. + * + * @param original The original Personal Attribute List. + * @param modified The modified Personal Attribute List. + * @return true if the original list contains the modified one. False + * otherwise. + * + * @see IPersonalAttributeList + */ + boolean comparePersonalAttributeLists(IPersonalAttributeList original, + IPersonalAttributeList modified); + + /** + * Prepares the citizen to be redirected to the AtP. + * + * @param personalList The Personal Attribute List. + * @param parameters The parameters. + * @param session The session object. + * + * @return byte[] containing a SAML Request. + * + * @see IPersonalAttributeList + * @see IStorkSession + */ + byte[] prepareAttributeRequest(IPersonalAttributeList personalList, + Map parameters, IStorkSession session); + + /** + * Validates a SAML Response. + * + * @param samlToken The SAML Token. + * @param session The session object. + * + * @return the STORKAttrQueryResponse associated with the validated response. + * + * @see IStorkSession + */ + STORKAttrQueryResponse processAttributeResponse(byte[] samlToken, + IStorkSession session); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ICheckAttributeValue.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ICheckAttributeValue.java new file mode 100644 index 000000000..31a8d78ff --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ICheckAttributeValue.java @@ -0,0 +1,37 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import java.util.List; + +/** + * Interface that defines the methods to work with the validation of attributes. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface ICheckAttributeValue { + + /** + * Checks if the list of values contains the expected value. + * + * @param values The List of values. + * @param expectedValue The value to check if it exists on the list. + * + * @return boolean true, if the value is present in the list. False, + * otherwise. + */ + boolean checkValue(List values, String expectedValue); + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IDeriveAttribute.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IDeriveAttribute.java new file mode 100644 index 000000000..78eb53004 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/IDeriveAttribute.java @@ -0,0 +1,40 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import eu.stork.peps.auth.commons.IStorkSession; +import eu.stork.peps.auth.commons.PersonalAttribute; + +/** + * Interface that defines the methods to work with derivation of attributes. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface IDeriveAttribute { + + /** + * Derives the attribute value. Set the Personal Attribute value to null if + * the value in session or the value of age are invalid (non-numeric or null). + * + * @param personalAttrList The Personal Attribute List. + * @param session The session object. + * + * @see PersonalAttribute The personal Attribute + * @see IStorkSession The session object. + */ + void deriveAttributeToData(PersonalAttribute personalAttrList, + IStorkSession session); + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/INormaliseValue.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/INormaliseValue.java new file mode 100644 index 000000000..ca2114e32 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/INormaliseValue.java @@ -0,0 +1,35 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import eu.stork.peps.auth.commons.PersonalAttribute; + +/** + * Interface for attribute's value normalisation. + * + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface INormaliseValue { + + /** + * Translates the attribute's value from local format to STORK format. + * + * @param personalAttribute The Personal Attribute to normalise the value. + * + * @see PersonalAttribute + */ + void normaliseAttributeValueToStork(PersonalAttribute personalAttribute); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ITranslatorService.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ITranslatorService.java new file mode 100644 index 000000000..8a33897d8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/ITranslatorService.java @@ -0,0 +1,100 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.auth.specific; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.IStorkSession; +import eu.stork.peps.auth.commons.STORKAuthnRequest; + +/** + * Interface for attributes normalization. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com + */ +public interface ITranslatorService { + + /** + * Translates the attributes from local format to STORK format. + * + * @param personalList The Personal Attribute List. + * + * @return The Personal Attribute List with normalised attributes. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList normaliseAttributeNamesToStork( + IPersonalAttributeList personalList); + + /** + * Translates the attributes values from local format to STORK format. + * + * @param personalList The Personal Attribute List. + * + * @return The PersonalAttributeList with normalised values. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList normaliseAttributeValuesToStork( + IPersonalAttributeList personalList); + + /** + * Translates the attributes from STORK format to local format. + * + * @param personalList The Personal Attribute List. + * + * @return The PersonalAttributeList with normalised attributes. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList normaliseAttributeNamesFromStork( + IPersonalAttributeList personalList); + + /** + * Derive Attribute Names To Stork format. + * + * @param personalList The Personal Attribute List, + * + * @return The PersonalAttributeList with derived attributes. + * + * @see IPersonalAttributeList + */ + IPersonalAttributeList deriveAttributeFromStork( + IPersonalAttributeList personalList); + + /** + * Derive Attribute Names from Stork format. + * + * @param session The session object. + * @param modifiedList The Personal Attribute List. + * + * @return The PersonalAttributeList with derived attributes. + * + * @see IStorkSession + * @see IPersonalAttributeList + */ + IPersonalAttributeList deriveAttributeToStork(IStorkSession session, + IPersonalAttributeList modifiedList); + + /** + * Validate the values of the attributes. + * + * @param pal The attribute list + * + * @return True, if all the attributes have values. False, otherwise. + * + * @see STORKAuthnRequest + */ + boolean checkAttributeValues(IPersonalAttributeList pa); +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/package-info.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/package-info.java new file mode 100644 index 000000000..a25c52311 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/auth/specific/package-info.java @@ -0,0 +1,8 @@ +/** + * Specific PEPS Interfaces that implements functionality of the Authentication + * Service. + * + * @since 1.0 + */ +package eu.stork.peps.auth.specific; + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/all-wcprops new file mode 100644 index 000000000..d792fc132 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 81 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/entries new file mode 100644 index 000000000..e43413c41 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps/complex +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +attributes +dir + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/all-wcprops b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/all-wcprops new file mode 100644 index 000000000..76286973c --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/all-wcprops @@ -0,0 +1,125 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes +END +ObjectFactory.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/ObjectFactory.java +END +IsTeacherOfType.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsTeacherOfType.java +END +CanonicalAddressType.java +K 25 +svn:wc:ra_dav:version-url +V 118 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/CanonicalAddressType.java +END +IsCourseCoordinatorType.java +K 25 +svn:wc:ra_dav:version-url +V 121 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsCourseCoordinatorType.java +END +MandateContentType.java +K 25 +svn:wc:ra_dav:version-url +V 116 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/MandateContentType.java +END +Habilitation.java +K 25 +svn:wc:ra_dav:version-url +V 110 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/Habilitation.java +END +IsHCPType.java +K 25 +svn:wc:ra_dav:version-url +V 107 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsHCPType.java +END +IsAcademicStaffType.java +K 25 +svn:wc:ra_dav:version-url +V 117 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsAcademicStaffType.java +END +AttributeStatusType.java +K 25 +svn:wc:ra_dav:version-url +V 117 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/AttributeStatusType.java +END +HabilitationType.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/HabilitationType.java +END +IsAdminStaffType.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsAdminStaffType.java +END +MandateType.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/MandateType.java +END +HasAccountInBankType.java +K 25 +svn:wc:ra_dav:version-url +V 118 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/HasAccountInBankType.java +END +IsHealthCareProfessionalType.java +K 25 +svn:wc:ra_dav:version-url +V 126 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsHealthCareProfessionalType.java +END +IsStudentType.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/IsStudentType.java +END +package-info.java +K 25 +svn:wc:ra_dav:version-url +V 110 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/package-info.java +END +AcTitleType.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/AcTitleType.java +END +RequestedAttributeType.java +K 25 +svn:wc:ra_dav:version-url +V 120 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/RequestedAttributeType.java +END +HasDegreeType.java +K 25 +svn:wc:ra_dav:version-url +V 111 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/HasDegreeType.java +END +RepresentationPersonType.java +K 25 +svn:wc:ra_dav:version-url +V 122 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes/RepresentationPersonType.java +END diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/entries b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/entries new file mode 100644 index 000000000..434de60f8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/entries @@ -0,0 +1,708 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/java/eu/stork/peps/complex/attributes +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +IsHCPType.java +file + + + + +2014-03-05T09:36:07.898515Z +c7794f438dce3f5e4e27e605a642a22a +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3801 + +IsAcademicStaffType.java +file + + + + +2014-03-05T09:36:07.898515Z +43d67ea6cedb4601555d0394db95417a +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3818 + +HabilitationType.java +file + + + + +2014-03-05T09:36:07.898515Z +6e9cc940cbe5298156c5e7b524936f11 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2314 + +AttributeStatusType.java +file + + + + +2014-03-05T09:36:07.898515Z +4e30a60177a9ab03aececf580482fad1 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +1734 + +IsAdminStaffType.java +file + + + + +2014-03-05T09:36:07.898515Z +5a49a39f1d260a3c306216069751260f +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2341 + +MandateType.java +file + + + + +2014-03-05T09:36:07.898515Z +2fbb38548efd320e4df27959a9842731 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3581 + +HasAccountInBankType.java +file + + + + +2014-03-05T09:36:07.894515Z +f71b4c28dd5c9580fb87c3573435837b +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2339 + +IsHealthCareProfessionalType.java +file + + + + +2014-03-05T09:36:07.894515Z +2a4106ac8c87cc056b853b7f9ffb6fbc +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3834 + +package-info.java +file + + + + +2014-03-05T09:36:07.894515Z +5a2f7df8040e53c9e0dc7beacc8f3457 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +549 + +IsStudentType.java +file + + + + +2014-03-05T09:36:07.894515Z +a576b2ef395482c49cb968e91e33ec89 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3714 + +AcTitleType.java +file + + + + +2014-03-05T09:36:07.894515Z +df18729d7dbd509aeeac2f17ef036e19 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2388 + +RequestedAttributeType.java +file + + + + +2014-03-05T09:36:07.894515Z +c6ada26a7ff439713e9a4588d1b62b0a +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +6089 + +HasDegreeType.java +file + + + + +2014-03-05T09:36:07.894515Z +3a54a31f40c97b44d31f1a70e0767daa +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +4432 + +RepresentationPersonType.java +file + + + + +2014-03-05T09:36:07.898515Z +84b6c9432085cf590c3ed06e58b4307f +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +7205 + +ObjectFactory.java +file + + + + +2014-03-05T09:36:07.898515Z +bc36df4b11e93ab03119dfb25626bfb1 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +18679 + +IsTeacherOfType.java +file + + + + +2014-03-05T09:36:07.898515Z +1575bd6840471d713bd61c5d337d3900 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3668 + +CanonicalAddressType.java +file + + + + +2014-03-05T09:36:07.898515Z +63bc0e23343775a0c252a03a5a3b09d1 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +6847 + +IsCourseCoordinatorType.java +file + + + + +2014-03-05T09:36:07.898515Z +9927ea145575d05bd2984bee0e3550be +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2423 + +MandateContentType.java +file + + + + +2014-03-05T09:36:07.898515Z +debc98ce374d669b7621dea674120dfc +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +6205 + +Habilitation.java +file + + + + +2014-03-05T09:36:07.898515Z +248b26e8c89ddc3366c528cf3852d27b +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2298 + diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AcTitleType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AcTitleType.java.svn-base new file mode 100644 index 000000000..3c214cb7b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AcTitleType.java.svn-base @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for acTitleType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="acTitleType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="titleNormalised" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}titleNormalisedType"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "acTitleType", propOrder = { + "titleNormalised", + "aqaa" +}) +public class AcTitleType { + + @XmlElement(required = true) + protected String titleNormalised; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the titleNormalised property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTitleNormalised() { + return titleNormalised; + } + + /** + * Sets the value of the titleNormalised property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTitleNormalised(String value) { + this.titleNormalised = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AttributeStatusType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AttributeStatusType.java.svn-base new file mode 100644 index 000000000..1a815e944 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/AttributeStatusType.java.svn-base @@ -0,0 +1,61 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for AttributeStatusType. + * + *

    The following schema fragment specifies the expected content contained within this class. + *

    + *

    + * <simpleType name="AttributeStatusType">
    + *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
    + *     <enumeration value="Available"/>
    + *     <enumeration value="NotAvailable"/>
    + *     <enumeration value="Withheld"/>
    + *   </restriction>
    + * </simpleType>
    + * 
    + * + */ +@XmlType(name = "AttributeStatusType") +@XmlEnum +public enum AttributeStatusType { + + @XmlEnumValue("Available") + AVAILABLE("Available"), + @XmlEnumValue("NotAvailable") + NOT_AVAILABLE("NotAvailable"), + @XmlEnumValue("Withheld") + WITHHELD("Withheld"); + private final String value; + + AttributeStatusType(String v) { + value = v; + } + + public String value() { + return value; + } + + public static AttributeStatusType fromValue(String v) { + for (AttributeStatusType c: AttributeStatusType.values()) { + if (c.value.equals(v)) { + return c; + } + } + throw new IllegalArgumentException(v); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/CanonicalAddressType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/CanonicalAddressType.java.svn-base new file mode 100644 index 000000000..fa0289cfa --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/CanonicalAddressType.java.svn-base @@ -0,0 +1,264 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + *

    Java class for canonicalAddressType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="canonicalAddressType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="countryCodeAddress" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}CountryCodeType"/>
    + *         <element name="state" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *         <element name="municipalityCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *         <element name="town" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="postalCode" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="streetName" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="streetNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *         <element name="apartmentNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "canonicalAddressType", propOrder = { + "countryCodeAddress", + "state", + "municipalityCode", + "town", + "postalCode", + "streetName", + "streetNumber", + "apartmentNumber" +}) +public class CanonicalAddressType { + + @XmlElement(required = true) + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + protected String countryCodeAddress; + protected String state; + protected String municipalityCode; + @XmlElement(required = true) + protected String town; + @XmlElement(required = true) + protected String postalCode; + @XmlElement(required = true) + protected String streetName; + protected String streetNumber; + protected String apartmentNumber; + + /** + * Gets the value of the countryCodeAddress property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCountryCodeAddress() { + return countryCodeAddress; + } + + /** + * Sets the value of the countryCodeAddress property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCountryCodeAddress(String value) { + this.countryCodeAddress = value; + } + + /** + * Gets the value of the state property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getState() { + return state; + } + + /** + * Sets the value of the state property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setState(String value) { + this.state = value; + } + + /** + * Gets the value of the municipalityCode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMunicipalityCode() { + return municipalityCode; + } + + /** + * Sets the value of the municipalityCode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMunicipalityCode(String value) { + this.municipalityCode = value; + } + + /** + * Gets the value of the town property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTown() { + return town; + } + + /** + * Sets the value of the town property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTown(String value) { + this.town = value; + } + + /** + * Gets the value of the postalCode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPostalCode() { + return postalCode; + } + + /** + * Sets the value of the postalCode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPostalCode(String value) { + this.postalCode = value; + } + + /** + * Gets the value of the streetName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStreetName() { + return streetName; + } + + /** + * Sets the value of the streetName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStreetName(String value) { + this.streetName = value; + } + + /** + * Gets the value of the streetNumber property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStreetNumber() { + return streetNumber; + } + + /** + * Sets the value of the streetNumber property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStreetNumber(String value) { + this.streetNumber = value; + } + + /** + * Gets the value of the apartmentNumber property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getApartmentNumber() { + return apartmentNumber; + } + + /** + * Sets the value of the apartmentNumber property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setApartmentNumber(String value) { + this.apartmentNumber = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/Habilitation.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/Habilitation.java.svn-base new file mode 100644 index 000000000..3d99c9600 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/Habilitation.java.svn-base @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for habilitation complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="habilitation">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="ability" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "habilitation", propOrder = { + "ability", + "aqaa" +}) +public class Habilitation { + + @XmlElement(required = true) + protected String ability; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the ability property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAbility() { + return ability; + } + + /** + * Sets the value of the ability property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAbility(String value) { + this.ability = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HabilitationType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HabilitationType.java.svn-base new file mode 100644 index 000000000..6a5cb7b00 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HabilitationType.java.svn-base @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for habilitationType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="habilitationType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="ability" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "habilitationType", propOrder = { + "ability", + "aqaa" +}) +public class HabilitationType { + + @XmlElement(required = true) + protected String ability; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the ability property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAbility() { + return ability; + } + + /** + * Sets the value of the ability property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAbility(String value) { + this.ability = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasAccountInBankType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasAccountInBankType.java.svn-base new file mode 100644 index 000000000..cc09f0486 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasAccountInBankType.java.svn-base @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for hasAccountInBankType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="hasAccountInBankType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="bankName" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "hasAccountInBankType", propOrder = { + "bankName", + "aqaa" +}) +public class HasAccountInBankType { + + @XmlElement(required = true) + protected String bankName; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the bankName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getBankName() { + return bankName; + } + + /** + * Sets the value of the bankName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setBankName(String value) { + this.bankName = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasDegreeType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasDegreeType.java.svn-base new file mode 100644 index 000000000..ea466cb18 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/HasDegreeType.java.svn-base @@ -0,0 +1,174 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.math.BigInteger; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for hasDegreeType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="hasDegreeType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="study" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}studyType"/>
    + *         <element name="level" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}LevelType"/>
    + *         <element name="yearObtained" type="{http://www.w3.org/2001/XMLSchema}integer"/>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "hasDegreeType", propOrder = { + "study", + "level", + "yearObtained", + "nameOfInstitution", + "aqaa" +}) +public class HasDegreeType { + + @XmlElement(required = true) + protected String study; + @XmlElement(required = true) + protected String level; + @XmlElement(required = true) + protected BigInteger yearObtained; + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the study property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStudy() { + return study; + } + + /** + * Sets the value of the study property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStudy(String value) { + this.study = value; + } + + /** + * Gets the value of the level property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getLevel() { + return level; + } + + /** + * Sets the value of the level property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setLevel(String value) { + this.level = value; + } + + /** + * Gets the value of the yearObtained property. + * + * @return + * possible object is + * {@link BigInteger } + * + */ + public BigInteger getYearObtained() { + return yearObtained; + } + + /** + * Sets the value of the yearObtained property. + * + * @param value + * allowed object is + * {@link BigInteger } + * + */ + public void setYearObtained(BigInteger value) { + this.yearObtained = value; + } + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAcademicStaffType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAcademicStaffType.java.svn-base new file mode 100644 index 000000000..02d9286d8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAcademicStaffType.java.svn-base @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isAcademicStaffType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isAcademicStaffType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="occupation" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}occupationType"/>
    + *         <element name="knowledgearea" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isAcademicStaffType", propOrder = { + "nameOfInstitution", + "occupation", + "knowledgearea", + "aqaa" +}) +public class IsAcademicStaffType { + + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(required = true) + protected String occupation; + @XmlElement(required = true) + protected String knowledgearea; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the occupation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getOccupation() { + return occupation; + } + + /** + * Sets the value of the occupation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setOccupation(String value) { + this.occupation = value; + } + + /** + * Gets the value of the knowledgearea property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getKnowledgearea() { + return knowledgearea; + } + + /** + * Sets the value of the knowledgearea property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setKnowledgearea(String value) { + this.knowledgearea = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAdminStaffType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAdminStaffType.java.svn-base new file mode 100644 index 000000000..0de16ee77 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsAdminStaffType.java.svn-base @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isAdminStaffType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isAdminStaffType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="adminStaff" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isAdminStaffType", propOrder = { + "adminStaff", + "aqaa" +}) +public class IsAdminStaffType { + + @XmlElement(required = true) + protected String adminStaff; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the adminStaff property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAdminStaff() { + return adminStaff; + } + + /** + * Sets the value of the adminStaff property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAdminStaff(String value) { + this.adminStaff = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsCourseCoordinatorType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsCourseCoordinatorType.java.svn-base new file mode 100644 index 000000000..58caa2f22 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsCourseCoordinatorType.java.svn-base @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isCourseCoordinatorType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isCourseCoordinatorType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="courseCoodinator" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isCourseCoordinatorType", propOrder = { + "courseCoodinator", + "aqaa" +}) +public class IsCourseCoordinatorType { + + @XmlElement(required = true) + protected String courseCoodinator; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the courseCoodinator property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCourseCoodinator() { + return courseCoodinator; + } + + /** + * Sets the value of the courseCoodinator property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCourseCoodinator(String value) { + this.courseCoodinator = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHCPType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHCPType.java.svn-base new file mode 100644 index 000000000..17e315d2d --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHCPType.java.svn-base @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isHCPType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isHCPType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfOrganisation" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="HCPType" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}HCPType"/>
    + *         <element name="specialisation" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}specialisationType"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isHCPType", propOrder = { + "nameOfOrganisation", + "hcpType", + "specialisation", + "aqaa" +}) +public class IsHCPType { + + @XmlElement(required = true) + protected String nameOfOrganisation; + @XmlElement(name = "HCPType", required = true) + protected String hcpType; + @XmlElement(required = true) + protected String specialisation; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfOrganisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfOrganisation() { + return nameOfOrganisation; + } + + /** + * Sets the value of the nameOfOrganisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfOrganisation(String value) { + this.nameOfOrganisation = value; + } + + /** + * Gets the value of the hcpType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getHCPType() { + return hcpType; + } + + /** + * Sets the value of the hcpType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHCPType(String value) { + this.hcpType = value; + } + + /** + * Gets the value of the specialisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSpecialisation() { + return specialisation; + } + + /** + * Sets the value of the specialisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSpecialisation(String value) { + this.specialisation = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHealthCareProfessionalType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHealthCareProfessionalType.java.svn-base new file mode 100644 index 000000000..de2003a3f --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsHealthCareProfessionalType.java.svn-base @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isHealthCareProfessionalType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isHealthCareProfessionalType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfOrganisation" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}HCPType"/>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}specialisation"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isHealthCareProfessionalType", propOrder = { + "nameOfOrganisation", + "hcpType", + "specialisation", + "aqaa" +}) +public class IsHealthCareProfessionalType { + + @XmlElement(required = true) + protected String nameOfOrganisation; + @XmlElement(name = "HCPType", required = true) + protected String hcpType; + @XmlElement(required = true) + protected String specialisation; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfOrganisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfOrganisation() { + return nameOfOrganisation; + } + + /** + * Sets the value of the nameOfOrganisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfOrganisation(String value) { + this.nameOfOrganisation = value; + } + + /** + * Gets the value of the hcpType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getHCPType() { + return hcpType; + } + + /** + * Sets the value of the hcpType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHCPType(String value) { + this.hcpType = value; + } + + /** + * Gets the value of the specialisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSpecialisation() { + return specialisation; + } + + /** + * Sets the value of the specialisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSpecialisation(String value) { + this.specialisation = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsStudentType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsStudentType.java.svn-base new file mode 100644 index 000000000..6a7dc838a --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsStudentType.java.svn-base @@ -0,0 +1,146 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.math.BigInteger; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isStudentType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isStudentType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}study"/>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="course" type="{http://www.w3.org/2001/XMLSchema}integer"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isStudentType", propOrder = { + "study", + "nameOfInstitution", + "course", + "aqaa" +}) +public class IsStudentType { + + @XmlElement(required = true) + protected String study; + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(required = true) + protected BigInteger course; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the study property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStudy() { + return study; + } + + /** + * Sets the value of the study property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStudy(String value) { + this.study = value; + } + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the course property. + * + * @return + * possible object is + * {@link BigInteger } + * + */ + public BigInteger getCourse() { + return course; + } + + /** + * Sets the value of the course property. + * + * @param value + * allowed object is + * {@link BigInteger } + * + */ + public void setCourse(BigInteger value) { + this.course = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsTeacherOfType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsTeacherOfType.java.svn-base new file mode 100644 index 000000000..810f652c1 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/IsTeacherOfType.java.svn-base @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isTeacherOfType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isTeacherOfType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="course" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="role" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isTeacherOfType", propOrder = { + "nameOfInstitution", + "course", + "role", + "aqaa" +}) +public class IsTeacherOfType { + + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(required = true) + protected String course; + @XmlElement(required = true) + protected String role; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the course property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCourse() { + return course; + } + + /** + * Sets the value of the course property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCourse(String value) { + this.course = value; + } + + /** + * Gets the value of the role property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getRole() { + return role; + } + + /** + * Sets the value of the role property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setRole(String value) { + this.role = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateContentType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateContentType.java.svn-base new file mode 100644 index 000000000..84ce2727b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateContentType.java.svn-base @@ -0,0 +1,233 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.math.BigInteger; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSchemaType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.datatype.XMLGregorianCalendar; + + +/** + *

    Java class for mandateContentType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="mandateContentType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="validFrom" type="{http://www.w3.org/2001/XMLSchema}date"/>
    + *         <element name="validTo" type="{http://www.w3.org/2001/XMLSchema}date"/>
    + *         <element name="transactionLimit" type="{http://www.w3.org/2001/XMLSchema}integer"/>
    + *         <element name="transactionLimitCurrency" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}currencyType"/>
    + *         <element name="isJoint" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="ischained" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
    + *         <element name="typePower" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "mandateContentType", propOrder = { + "validFrom", + "validTo", + "transactionLimit", + "transactionLimitCurrency", + "isJoint", + "ischained", + "typePower" +}) +public class MandateContentType { + + @XmlElement(required = true) + @XmlSchemaType(name = "date") + protected XMLGregorianCalendar validFrom; + @XmlElement(required = true) + @XmlSchemaType(name = "date") + protected XMLGregorianCalendar validTo; + @XmlElement(required = true) + protected BigInteger transactionLimit; + @XmlElement(required = true) + protected String transactionLimitCurrency; + @XmlElement(required = true) + protected String isJoint; + protected boolean ischained; + @XmlElement(required = true) + protected String typePower; + + /** + * Gets the value of the validFrom property. + * + * @return + * possible object is + * {@link XMLGregorianCalendar } + * + */ + public XMLGregorianCalendar getValidFrom() { + return validFrom; + } + + /** + * Sets the value of the validFrom property. + * + * @param value + * allowed object is + * {@link XMLGregorianCalendar } + * + */ + public void setValidFrom(XMLGregorianCalendar value) { + this.validFrom = value; + } + + /** + * Gets the value of the validTo property. + * + * @return + * possible object is + * {@link XMLGregorianCalendar } + * + */ + public XMLGregorianCalendar getValidTo() { + return validTo; + } + + /** + * Sets the value of the validTo property. + * + * @param value + * allowed object is + * {@link XMLGregorianCalendar } + * + */ + public void setValidTo(XMLGregorianCalendar value) { + this.validTo = value; + } + + /** + * Gets the value of the transactionLimit property. + * + * @return + * possible object is + * {@link BigInteger } + * + */ + public BigInteger getTransactionLimit() { + return transactionLimit; + } + + /** + * Sets the value of the transactionLimit property. + * + * @param value + * allowed object is + * {@link BigInteger } + * + */ + public void setTransactionLimit(BigInteger value) { + this.transactionLimit = value; + } + + /** + * Gets the value of the transactionLimitCurrency property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTransactionLimitCurrency() { + return transactionLimitCurrency; + } + + /** + * Sets the value of the transactionLimitCurrency property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTransactionLimitCurrency(String value) { + this.transactionLimitCurrency = value; + } + + /** + * Gets the value of the isJoint property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getIsJoint() { + return isJoint; + } + + /** + * Sets the value of the isJoint property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setIsJoint(String value) { + this.isJoint = value; + } + + /** + * Gets the value of the ischained property. + * + */ + public boolean isIschained() { + return ischained; + } + + /** + * Sets the value of the ischained property. + * + */ + public void setIschained(boolean value) { + this.ischained = value; + } + + /** + * Gets the value of the typePower property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTypePower() { + return typePower; + } + + /** + * Sets the value of the typePower property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTypePower(String value) { + this.typePower = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateType.java.svn-base new file mode 100644 index 000000000..26597dc6b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/MandateType.java.svn-base @@ -0,0 +1,125 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for mandateType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="mandateType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="represented" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}representationPersonType"/>
    + *         <element name="representing" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}representationPersonType"/>
    + *         <element name="mandateContent" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}mandateContentType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "mandateType", propOrder = { + "represented", + "representing", + "mandateContent" +}) +public class MandateType { + + @XmlElement(required = true) + protected RepresentationPersonType represented; + @XmlElement(required = true) + protected RepresentationPersonType representing; + @XmlElement(required = true) + protected MandateContentType mandateContent; + + /** + * Gets the value of the represented property. + * + * @return + * possible object is + * {@link RepresentationPersonType } + * + */ + public RepresentationPersonType getRepresented() { + return represented; + } + + /** + * Sets the value of the represented property. + * + * @param value + * allowed object is + * {@link RepresentationPersonType } + * + */ + public void setRepresented(RepresentationPersonType value) { + this.represented = value; + } + + /** + * Gets the value of the representing property. + * + * @return + * possible object is + * {@link RepresentationPersonType } + * + */ + public RepresentationPersonType getRepresenting() { + return representing; + } + + /** + * Sets the value of the representing property. + * + * @param value + * allowed object is + * {@link RepresentationPersonType } + * + */ + public void setRepresenting(RepresentationPersonType value) { + this.representing = value; + } + + /** + * Gets the value of the mandateContent property. + * + * @return + * possible object is + * {@link MandateContentType } + * + */ + public MandateContentType getMandateContent() { + return mandateContent; + } + + /** + * Sets the value of the mandateContent property. + * + * @param value + * allowed object is + * {@link MandateContentType } + * + */ + public void setMandateContent(MandateContentType value) { + this.mandateContent = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/ObjectFactory.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/ObjectFactory.java.svn-base new file mode 100644 index 000000000..eca4ca3de --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/ObjectFactory.java.svn-base @@ -0,0 +1,433 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the eu.stork.peps.complex.attributes package. + *

    An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _Habilitation_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "habilitation"); + private final static QName _HasDegree_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "hasDegree"); + private final static QName _SpApplication_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "spApplication"); + private final static QName _Specialisation_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "specialisation"); + private final static QName _IsStudent_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isStudent"); + private final static QName _AQAA_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "AQAA"); + private final static QName _HCPType_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "HCPType"); + private final static QName _CanonicalResidenceAddress_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "canonicalResidenceAddress"); + private final static QName _AcTitle_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "acTitle"); + private final static QName _QualityAuthenticationAssuranceLevel_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "QualityAuthenticationAssuranceLevel"); + private final static QName _IsAcademicStaff_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isAcademicStaff"); + private final static QName _IsTeacherOf_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isTeacherOf"); + private final static QName _IsCourseCoordinator_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isCourseCoordinator"); + private final static QName _CanonicalRegisteredAddress_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "canonicalRegisteredAddress"); + private final static QName _SpCountry_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "spCountry"); + private final static QName _IsAdminStaff_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isAdminStaff"); + private final static QName _CitizenCountryCode_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "CitizenCountryCode"); + private final static QName _AttributeValue_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "AttributeValue"); + private final static QName _HasAccountInBank_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "hasAccountInBank"); + private final static QName _CountryCodeAddress_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "countryCodeAddress"); + private final static QName _Study_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "study"); + private final static QName _IsHealthCareProfessional_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isHealthCareProfessional"); + private final static QName _Mandate_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "mandate"); + private final static QName _RequestedAttribute_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "RequestedAttribute"); + private final static QName _SpSector_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "spSector"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: eu.stork.peps.complex.attributes + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link RequestedAttributeType } + * + */ + public RequestedAttributeType createRequestedAttributeType() { + return new RequestedAttributeType(); + } + + /** + * Create an instance of {@link MandateType } + * + */ + public MandateType createMandateType() { + return new MandateType(); + } + + /** + * Create an instance of {@link HasAccountInBankType } + * + */ + public HasAccountInBankType createHasAccountInBankType() { + return new HasAccountInBankType(); + } + + /** + * Create an instance of {@link IsHealthCareProfessionalType } + * + */ + public IsHealthCareProfessionalType createIsHealthCareProfessionalType() { + return new IsHealthCareProfessionalType(); + } + + /** + * Create an instance of {@link IsAdminStaffType } + * + */ + public IsAdminStaffType createIsAdminStaffType() { + return new IsAdminStaffType(); + } + + /** + * Create an instance of {@link CanonicalAddressType } + * + */ + public CanonicalAddressType createCanonicalAddressType() { + return new CanonicalAddressType(); + } + + /** + * Create an instance of {@link IsCourseCoordinatorType } + * + */ + public IsCourseCoordinatorType createIsCourseCoordinatorType() { + return new IsCourseCoordinatorType(); + } + + /** + * Create an instance of {@link IsAcademicStaffType } + * + */ + public IsAcademicStaffType createIsAcademicStaffType() { + return new IsAcademicStaffType(); + } + + /** + * Create an instance of {@link IsTeacherOfType } + * + */ + public IsTeacherOfType createIsTeacherOfType() { + return new IsTeacherOfType(); + } + + /** + * Create an instance of {@link AcTitleType } + * + */ + public AcTitleType createAcTitleType() { + return new AcTitleType(); + } + + /** + * Create an instance of {@link IsStudentType } + * + */ + public IsStudentType createIsStudentType() { + return new IsStudentType(); + } + + /** + * Create an instance of {@link HasDegreeType } + * + */ + public HasDegreeType createHasDegreeType() { + return new HasDegreeType(); + } + + /** + * Create an instance of {@link HabilitationType } + * + */ + public HabilitationType createHabilitationType() { + return new HabilitationType(); + } + + /** + * Create an instance of {@link MandateContentType } + * + */ + public MandateContentType createMandateContentType() { + return new MandateContentType(); + } + + /** + * Create an instance of {@link RepresentationPersonType } + * + */ + public RepresentationPersonType createRepresentationPersonType() { + return new RepresentationPersonType(); + } + + /** + * Create an instance of {@link Habilitation } + * + */ + public Habilitation createHabilitation() { + return new Habilitation(); + } + + /** + * Create an instance of {@link IsHCPType } + * + */ + public IsHCPType createIsHCPType() { + return new IsHCPType(); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link HabilitationType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "habilitation") + public JAXBElement createHabilitation(HabilitationType value) { + return new JAXBElement(_Habilitation_QNAME, HabilitationType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link HasDegreeType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "hasDegree") + public JAXBElement createHasDegree(HasDegreeType value) { + return new JAXBElement(_HasDegree_QNAME, HasDegreeType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "spApplication") + public JAXBElement createSpApplication(String value) { + return new JAXBElement(_SpApplication_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "specialisation") + public JAXBElement createSpecialisation(String value) { + return new JAXBElement(_Specialisation_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsStudentType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isStudent") + public JAXBElement createIsStudent(IsStudentType value) { + return new JAXBElement(_IsStudent_QNAME, IsStudentType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "AQAA") + public JAXBElement createAQAA(Integer value) { + return new JAXBElement(_AQAA_QNAME, Integer.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "HCPType") + public JAXBElement createHCPType(String value) { + return new JAXBElement(_HCPType_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalAddressType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "canonicalResidenceAddress") + public JAXBElement createCanonicalResidenceAddress(CanonicalAddressType value) { + return new JAXBElement(_CanonicalResidenceAddress_QNAME, CanonicalAddressType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link AcTitleType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "acTitle") + public JAXBElement createAcTitle(AcTitleType value) { + return new JAXBElement(_AcTitle_QNAME, AcTitleType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "QualityAuthenticationAssuranceLevel") + public JAXBElement createQualityAuthenticationAssuranceLevel(Integer value) { + return new JAXBElement(_QualityAuthenticationAssuranceLevel_QNAME, Integer.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsAcademicStaffType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isAcademicStaff") + public JAXBElement createIsAcademicStaff(IsAcademicStaffType value) { + return new JAXBElement(_IsAcademicStaff_QNAME, IsAcademicStaffType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsTeacherOfType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isTeacherOf") + public JAXBElement createIsTeacherOf(IsTeacherOfType value) { + return new JAXBElement(_IsTeacherOf_QNAME, IsTeacherOfType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsCourseCoordinatorType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isCourseCoordinator") + public JAXBElement createIsCourseCoordinator(IsCourseCoordinatorType value) { + return new JAXBElement(_IsCourseCoordinator_QNAME, IsCourseCoordinatorType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalAddressType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "canonicalRegisteredAddress") + public JAXBElement createCanonicalRegisteredAddress(CanonicalAddressType value) { + return new JAXBElement(_CanonicalRegisteredAddress_QNAME, CanonicalAddressType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "spCountry") + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + public JAXBElement createSpCountry(String value) { + return new JAXBElement(_SpCountry_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsAdminStaffType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isAdminStaff") + public JAXBElement createIsAdminStaff(IsAdminStaffType value) { + return new JAXBElement(_IsAdminStaff_QNAME, IsAdminStaffType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "CitizenCountryCode") + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + public JAXBElement createCitizenCountryCode(String value) { + return new JAXBElement(_CitizenCountryCode_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "AttributeValue") + public JAXBElement createAttributeValue(Object value) { + return new JAXBElement(_AttributeValue_QNAME, Object.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link HasAccountInBankType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "hasAccountInBank") + public JAXBElement createHasAccountInBank(HasAccountInBankType value) { + return new JAXBElement(_HasAccountInBank_QNAME, HasAccountInBankType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "countryCodeAddress") + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + public JAXBElement createCountryCodeAddress(String value) { + return new JAXBElement(_CountryCodeAddress_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "study") + public JAXBElement createStudy(String value) { + return new JAXBElement(_Study_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsHealthCareProfessionalType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isHealthCareProfessional") + public JAXBElement createIsHealthCareProfessional(IsHealthCareProfessionalType value) { + return new JAXBElement(_IsHealthCareProfessional_QNAME, IsHealthCareProfessionalType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link MandateType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "mandate") + public JAXBElement createMandate(MandateType value) { + return new JAXBElement(_Mandate_QNAME, MandateType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link RequestedAttributeType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "RequestedAttribute") + public JAXBElement createRequestedAttribute(RequestedAttributeType value) { + return new JAXBElement(_RequestedAttribute_QNAME, RequestedAttributeType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "spSector") + public JAXBElement createSpSector(String value) { + return new JAXBElement(_SpSector_QNAME, String.class, null, value); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RepresentationPersonType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RepresentationPersonType.java.svn-base new file mode 100644 index 000000000..b1d993f89 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RepresentationPersonType.java.svn-base @@ -0,0 +1,289 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for representationPersonType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="representationPersonType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <choice>
    + *         <sequence>
    + *           <element name="eIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="givenName" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="surname" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="dateOfBirth" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         </sequence>
    + *         <sequence>
    + *           <element name="eLPIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="address" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="canonicalAddress" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}canonicalAddressType"/>
    + *           <element name="type" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         </sequence>
    + *       </choice>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "representationPersonType", propOrder = { + "eIdentifier", + "givenName", + "surname", + "dateOfBirth", + "elpIdentifier", + "name", + "address", + "canonicalAddress", + "type" +}) +public class RepresentationPersonType { + + protected String eIdentifier; + protected String givenName; + protected String surname; + protected String dateOfBirth; + @XmlElement(name = "eLPIdentifier") + protected String elpIdentifier; + protected String name; + protected String address; + protected CanonicalAddressType canonicalAddress; + protected String type; + + /** + * Gets the value of the eIdentifier property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getEIdentifier() { + return eIdentifier; + } + + /** + * Sets the value of the eIdentifier property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setEIdentifier(String value) { + this.eIdentifier = value; + } + + /** + * Gets the value of the givenName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getGivenName() { + return givenName; + } + + /** + * Sets the value of the givenName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setGivenName(String value) { + this.givenName = value; + } + + /** + * Gets the value of the surname property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSurname() { + return surname; + } + + /** + * Sets the value of the surname property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSurname(String value) { + this.surname = value; + } + + /** + * Gets the value of the dateOfBirth property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getDateOfBirth() { + return dateOfBirth; + } + + /** + * Sets the value of the dateOfBirth property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setDateOfBirth(String value) { + this.dateOfBirth = value; + } + + /** + * Gets the value of the elpIdentifier property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getELPIdentifier() { + return elpIdentifier; + } + + /** + * Sets the value of the elpIdentifier property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setELPIdentifier(String value) { + this.elpIdentifier = value; + } + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the address property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAddress() { + return address; + } + + /** + * Sets the value of the address property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAddress(String value) { + this.address = value; + } + + /** + * Gets the value of the canonicalAddress property. + * + * @return + * possible object is + * {@link CanonicalAddressType } + * + */ + public CanonicalAddressType getCanonicalAddress() { + return canonicalAddress; + } + + /** + * Sets the value of the canonicalAddress property. + * + * @param value + * allowed object is + * {@link CanonicalAddressType } + * + */ + public void setCanonicalAddress(CanonicalAddressType value) { + this.canonicalAddress = value; + } + + /** + * Gets the value of the type property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getType() { + return type; + } + + /** + * Sets the value of the type property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setType(String value) { + this.type = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RequestedAttributeType.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RequestedAttributeType.java.svn-base new file mode 100644 index 000000000..6a7c0b443 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/RequestedAttributeType.java.svn-base @@ -0,0 +1,212 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAnyAttribute; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSchemaType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.namespace.QName; + + +/** + *

    Java class for RequestedAttributeType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="RequestedAttributeType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}AttributeValue" maxOccurs="unbounded" minOccurs="0"/>
    + *       </sequence>
    + *       <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
    + *       <attribute name="NameFormat" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
    + *       <attribute name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" />
    + *       <attribute name="isRequired" type="{http://www.w3.org/2001/XMLSchema}boolean" />
    + *       <anyAttribute processContents='lax' namespace='##other'/>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "RequestedAttributeType", propOrder = { + "attributeValue" +}) +public class RequestedAttributeType { + + @XmlElement(name = "AttributeValue") + protected List attributeValue; + @XmlAttribute(name = "Name", required = true) + protected String name; + @XmlAttribute(name = "NameFormat", required = true) + @XmlSchemaType(name = "anyURI") + protected String nameFormat; + @XmlAttribute(name = "FriendlyName") + protected String friendlyName; + @XmlAttribute(name = "isRequired") + protected Boolean isRequired; + @XmlAnyAttribute + private Map otherAttributes = new HashMap(); + + /** + * Gets the value of the attributeValue property. + * + *

    + * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the attributeValue property. + * + *

    + * For example, to add a new item, do as follows: + *

    +     *    getAttributeValue().add(newItem);
    +     * 
    + * + * + *

    + * Objects of the following type(s) are allowed in the list + * {@link Object } + * + * + */ + public List getAttributeValue() { + if (attributeValue == null) { + attributeValue = new ArrayList(); + } + return this.attributeValue; + } + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the nameFormat property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameFormat() { + return nameFormat; + } + + /** + * Sets the value of the nameFormat property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameFormat(String value) { + this.nameFormat = value; + } + + /** + * Gets the value of the friendlyName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFriendlyName() { + return friendlyName; + } + + /** + * Sets the value of the friendlyName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFriendlyName(String value) { + this.friendlyName = value; + } + + /** + * Gets the value of the isRequired property. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isIsRequired() { + return isRequired; + } + + /** + * Sets the value of the isRequired property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setIsRequired(Boolean value) { + this.isRequired = value; + } + + /** + * Gets a map that contains attributes that aren't bound to any typed property on this class. + * + *

    + * the map is keyed by the name of the attribute and + * the value is the string value of the attribute. + * + * the map returned by this method is live, and you can add new attribute + * by updating the map directly. Because of this design, there's no setter. + * + * + * @return + * always non-null + */ + public Map getOtherAttributes() { + return otherAttributes; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/package-info.java.svn-base b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/package-info.java.svn-base new file mode 100644 index 000000000..47e225d22 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/.svn/text-base/package-info.java.svn-base @@ -0,0 +1,9 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) +package eu.stork.peps.complex.attributes; diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AcTitleType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AcTitleType.java new file mode 100644 index 000000000..3c214cb7b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AcTitleType.java @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for acTitleType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="acTitleType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="titleNormalised" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}titleNormalisedType"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "acTitleType", propOrder = { + "titleNormalised", + "aqaa" +}) +public class AcTitleType { + + @XmlElement(required = true) + protected String titleNormalised; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the titleNormalised property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTitleNormalised() { + return titleNormalised; + } + + /** + * Sets the value of the titleNormalised property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTitleNormalised(String value) { + this.titleNormalised = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AttributeStatusType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AttributeStatusType.java new file mode 100644 index 000000000..1a815e944 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/AttributeStatusType.java @@ -0,0 +1,61 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for AttributeStatusType. + * + *

    The following schema fragment specifies the expected content contained within this class. + *

    + *

    + * <simpleType name="AttributeStatusType">
    + *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
    + *     <enumeration value="Available"/>
    + *     <enumeration value="NotAvailable"/>
    + *     <enumeration value="Withheld"/>
    + *   </restriction>
    + * </simpleType>
    + * 
    + * + */ +@XmlType(name = "AttributeStatusType") +@XmlEnum +public enum AttributeStatusType { + + @XmlEnumValue("Available") + AVAILABLE("Available"), + @XmlEnumValue("NotAvailable") + NOT_AVAILABLE("NotAvailable"), + @XmlEnumValue("Withheld") + WITHHELD("Withheld"); + private final String value; + + AttributeStatusType(String v) { + value = v; + } + + public String value() { + return value; + } + + public static AttributeStatusType fromValue(String v) { + for (AttributeStatusType c: AttributeStatusType.values()) { + if (c.value.equals(v)) { + return c; + } + } + throw new IllegalArgumentException(v); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/CanonicalAddressType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/CanonicalAddressType.java new file mode 100644 index 000000000..fa0289cfa --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/CanonicalAddressType.java @@ -0,0 +1,264 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + + +/** + *

    Java class for canonicalAddressType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="canonicalAddressType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="countryCodeAddress" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}CountryCodeType"/>
    + *         <element name="state" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *         <element name="municipalityCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *         <element name="town" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="postalCode" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="streetName" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="streetNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *         <element name="apartmentNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "canonicalAddressType", propOrder = { + "countryCodeAddress", + "state", + "municipalityCode", + "town", + "postalCode", + "streetName", + "streetNumber", + "apartmentNumber" +}) +public class CanonicalAddressType { + + @XmlElement(required = true) + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + protected String countryCodeAddress; + protected String state; + protected String municipalityCode; + @XmlElement(required = true) + protected String town; + @XmlElement(required = true) + protected String postalCode; + @XmlElement(required = true) + protected String streetName; + protected String streetNumber; + protected String apartmentNumber; + + /** + * Gets the value of the countryCodeAddress property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCountryCodeAddress() { + return countryCodeAddress; + } + + /** + * Sets the value of the countryCodeAddress property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCountryCodeAddress(String value) { + this.countryCodeAddress = value; + } + + /** + * Gets the value of the state property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getState() { + return state; + } + + /** + * Sets the value of the state property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setState(String value) { + this.state = value; + } + + /** + * Gets the value of the municipalityCode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getMunicipalityCode() { + return municipalityCode; + } + + /** + * Sets the value of the municipalityCode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setMunicipalityCode(String value) { + this.municipalityCode = value; + } + + /** + * Gets the value of the town property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTown() { + return town; + } + + /** + * Sets the value of the town property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTown(String value) { + this.town = value; + } + + /** + * Gets the value of the postalCode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getPostalCode() { + return postalCode; + } + + /** + * Sets the value of the postalCode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setPostalCode(String value) { + this.postalCode = value; + } + + /** + * Gets the value of the streetName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStreetName() { + return streetName; + } + + /** + * Sets the value of the streetName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStreetName(String value) { + this.streetName = value; + } + + /** + * Gets the value of the streetNumber property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStreetNumber() { + return streetNumber; + } + + /** + * Sets the value of the streetNumber property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStreetNumber(String value) { + this.streetNumber = value; + } + + /** + * Gets the value of the apartmentNumber property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getApartmentNumber() { + return apartmentNumber; + } + + /** + * Sets the value of the apartmentNumber property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setApartmentNumber(String value) { + this.apartmentNumber = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/Habilitation.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/Habilitation.java new file mode 100644 index 000000000..3d99c9600 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/Habilitation.java @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for habilitation complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="habilitation">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="ability" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "habilitation", propOrder = { + "ability", + "aqaa" +}) +public class Habilitation { + + @XmlElement(required = true) + protected String ability; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the ability property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAbility() { + return ability; + } + + /** + * Sets the value of the ability property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAbility(String value) { + this.ability = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HabilitationType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HabilitationType.java new file mode 100644 index 000000000..6a5cb7b00 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HabilitationType.java @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for habilitationType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="habilitationType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="ability" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "habilitationType", propOrder = { + "ability", + "aqaa" +}) +public class HabilitationType { + + @XmlElement(required = true) + protected String ability; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the ability property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAbility() { + return ability; + } + + /** + * Sets the value of the ability property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAbility(String value) { + this.ability = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasAccountInBankType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasAccountInBankType.java new file mode 100644 index 000000000..cc09f0486 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasAccountInBankType.java @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for hasAccountInBankType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="hasAccountInBankType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="bankName" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "hasAccountInBankType", propOrder = { + "bankName", + "aqaa" +}) +public class HasAccountInBankType { + + @XmlElement(required = true) + protected String bankName; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the bankName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getBankName() { + return bankName; + } + + /** + * Sets the value of the bankName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setBankName(String value) { + this.bankName = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasDegreeType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasDegreeType.java new file mode 100644 index 000000000..ea466cb18 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/HasDegreeType.java @@ -0,0 +1,174 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.math.BigInteger; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for hasDegreeType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="hasDegreeType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="study" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}studyType"/>
    + *         <element name="level" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}LevelType"/>
    + *         <element name="yearObtained" type="{http://www.w3.org/2001/XMLSchema}integer"/>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "hasDegreeType", propOrder = { + "study", + "level", + "yearObtained", + "nameOfInstitution", + "aqaa" +}) +public class HasDegreeType { + + @XmlElement(required = true) + protected String study; + @XmlElement(required = true) + protected String level; + @XmlElement(required = true) + protected BigInteger yearObtained; + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the study property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStudy() { + return study; + } + + /** + * Sets the value of the study property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStudy(String value) { + this.study = value; + } + + /** + * Gets the value of the level property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getLevel() { + return level; + } + + /** + * Sets the value of the level property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setLevel(String value) { + this.level = value; + } + + /** + * Gets the value of the yearObtained property. + * + * @return + * possible object is + * {@link BigInteger } + * + */ + public BigInteger getYearObtained() { + return yearObtained; + } + + /** + * Sets the value of the yearObtained property. + * + * @param value + * allowed object is + * {@link BigInteger } + * + */ + public void setYearObtained(BigInteger value) { + this.yearObtained = value; + } + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAcademicStaffType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAcademicStaffType.java new file mode 100644 index 000000000..02d9286d8 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAcademicStaffType.java @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isAcademicStaffType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isAcademicStaffType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="occupation" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}occupationType"/>
    + *         <element name="knowledgearea" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isAcademicStaffType", propOrder = { + "nameOfInstitution", + "occupation", + "knowledgearea", + "aqaa" +}) +public class IsAcademicStaffType { + + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(required = true) + protected String occupation; + @XmlElement(required = true) + protected String knowledgearea; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the occupation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getOccupation() { + return occupation; + } + + /** + * Sets the value of the occupation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setOccupation(String value) { + this.occupation = value; + } + + /** + * Gets the value of the knowledgearea property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getKnowledgearea() { + return knowledgearea; + } + + /** + * Sets the value of the knowledgearea property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setKnowledgearea(String value) { + this.knowledgearea = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAdminStaffType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAdminStaffType.java new file mode 100644 index 000000000..0de16ee77 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsAdminStaffType.java @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isAdminStaffType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isAdminStaffType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="adminStaff" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isAdminStaffType", propOrder = { + "adminStaff", + "aqaa" +}) +public class IsAdminStaffType { + + @XmlElement(required = true) + protected String adminStaff; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the adminStaff property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAdminStaff() { + return adminStaff; + } + + /** + * Sets the value of the adminStaff property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAdminStaff(String value) { + this.adminStaff = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsCourseCoordinatorType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsCourseCoordinatorType.java new file mode 100644 index 000000000..58caa2f22 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsCourseCoordinatorType.java @@ -0,0 +1,89 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isCourseCoordinatorType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isCourseCoordinatorType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="courseCoodinator" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isCourseCoordinatorType", propOrder = { + "courseCoodinator", + "aqaa" +}) +public class IsCourseCoordinatorType { + + @XmlElement(required = true) + protected String courseCoodinator; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the courseCoodinator property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCourseCoodinator() { + return courseCoodinator; + } + + /** + * Sets the value of the courseCoodinator property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCourseCoodinator(String value) { + this.courseCoodinator = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHCPType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHCPType.java new file mode 100644 index 000000000..17e315d2d --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHCPType.java @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isHCPType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isHCPType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfOrganisation" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="HCPType" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}HCPType"/>
    + *         <element name="specialisation" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}specialisationType"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isHCPType", propOrder = { + "nameOfOrganisation", + "hcpType", + "specialisation", + "aqaa" +}) +public class IsHCPType { + + @XmlElement(required = true) + protected String nameOfOrganisation; + @XmlElement(name = "HCPType", required = true) + protected String hcpType; + @XmlElement(required = true) + protected String specialisation; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfOrganisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfOrganisation() { + return nameOfOrganisation; + } + + /** + * Sets the value of the nameOfOrganisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfOrganisation(String value) { + this.nameOfOrganisation = value; + } + + /** + * Gets the value of the hcpType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getHCPType() { + return hcpType; + } + + /** + * Sets the value of the hcpType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHCPType(String value) { + this.hcpType = value; + } + + /** + * Gets the value of the specialisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSpecialisation() { + return specialisation; + } + + /** + * Sets the value of the specialisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSpecialisation(String value) { + this.specialisation = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHealthCareProfessionalType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHealthCareProfessionalType.java new file mode 100644 index 000000000..de2003a3f --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsHealthCareProfessionalType.java @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isHealthCareProfessionalType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isHealthCareProfessionalType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfOrganisation" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}HCPType"/>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}specialisation"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isHealthCareProfessionalType", propOrder = { + "nameOfOrganisation", + "hcpType", + "specialisation", + "aqaa" +}) +public class IsHealthCareProfessionalType { + + @XmlElement(required = true) + protected String nameOfOrganisation; + @XmlElement(name = "HCPType", required = true) + protected String hcpType; + @XmlElement(required = true) + protected String specialisation; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfOrganisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfOrganisation() { + return nameOfOrganisation; + } + + /** + * Sets the value of the nameOfOrganisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfOrganisation(String value) { + this.nameOfOrganisation = value; + } + + /** + * Gets the value of the hcpType property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getHCPType() { + return hcpType; + } + + /** + * Sets the value of the hcpType property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHCPType(String value) { + this.hcpType = value; + } + + /** + * Gets the value of the specialisation property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSpecialisation() { + return specialisation; + } + + /** + * Sets the value of the specialisation property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSpecialisation(String value) { + this.specialisation = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsStudentType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsStudentType.java new file mode 100644 index 000000000..6a7dc838a --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsStudentType.java @@ -0,0 +1,146 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.math.BigInteger; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isStudentType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isStudentType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}study"/>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="course" type="{http://www.w3.org/2001/XMLSchema}integer"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isStudentType", propOrder = { + "study", + "nameOfInstitution", + "course", + "aqaa" +}) +public class IsStudentType { + + @XmlElement(required = true) + protected String study; + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(required = true) + protected BigInteger course; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the study property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStudy() { + return study; + } + + /** + * Sets the value of the study property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStudy(String value) { + this.study = value; + } + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the course property. + * + * @return + * possible object is + * {@link BigInteger } + * + */ + public BigInteger getCourse() { + return course; + } + + /** + * Sets the value of the course property. + * + * @param value + * allowed object is + * {@link BigInteger } + * + */ + public void setCourse(BigInteger value) { + this.course = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsTeacherOfType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsTeacherOfType.java new file mode 100644 index 000000000..810f652c1 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/IsTeacherOfType.java @@ -0,0 +1,145 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for isTeacherOfType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="isTeacherOfType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="nameOfInstitution" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="course" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="role" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="AQAA" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}QualityAuthenticationAssuranceLevelType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "isTeacherOfType", propOrder = { + "nameOfInstitution", + "course", + "role", + "aqaa" +}) +public class IsTeacherOfType { + + @XmlElement(required = true) + protected String nameOfInstitution; + @XmlElement(required = true) + protected String course; + @XmlElement(required = true) + protected String role; + @XmlElement(name = "AQAA") + protected int aqaa; + + /** + * Gets the value of the nameOfInstitution property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameOfInstitution() { + return nameOfInstitution; + } + + /** + * Sets the value of the nameOfInstitution property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameOfInstitution(String value) { + this.nameOfInstitution = value; + } + + /** + * Gets the value of the course property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCourse() { + return course; + } + + /** + * Sets the value of the course property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCourse(String value) { + this.course = value; + } + + /** + * Gets the value of the role property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getRole() { + return role; + } + + /** + * Sets the value of the role property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setRole(String value) { + this.role = value; + } + + /** + * Gets the value of the aqaa property. + * + */ + public int getAQAA() { + return aqaa; + } + + /** + * Sets the value of the aqaa property. + * + */ + public void setAQAA(int value) { + this.aqaa = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateContentType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateContentType.java new file mode 100644 index 000000000..84ce2727b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateContentType.java @@ -0,0 +1,233 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.math.BigInteger; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSchemaType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.datatype.XMLGregorianCalendar; + + +/** + *

    Java class for mandateContentType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="mandateContentType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="validFrom" type="{http://www.w3.org/2001/XMLSchema}date"/>
    + *         <element name="validTo" type="{http://www.w3.org/2001/XMLSchema}date"/>
    + *         <element name="transactionLimit" type="{http://www.w3.org/2001/XMLSchema}integer"/>
    + *         <element name="transactionLimitCurrency" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}currencyType"/>
    + *         <element name="isJoint" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         <element name="ischained" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
    + *         <element name="typePower" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "mandateContentType", propOrder = { + "validFrom", + "validTo", + "transactionLimit", + "transactionLimitCurrency", + "isJoint", + "ischained", + "typePower" +}) +public class MandateContentType { + + @XmlElement(required = true) + @XmlSchemaType(name = "date") + protected XMLGregorianCalendar validFrom; + @XmlElement(required = true) + @XmlSchemaType(name = "date") + protected XMLGregorianCalendar validTo; + @XmlElement(required = true) + protected BigInteger transactionLimit; + @XmlElement(required = true) + protected String transactionLimitCurrency; + @XmlElement(required = true) + protected String isJoint; + protected boolean ischained; + @XmlElement(required = true) + protected String typePower; + + /** + * Gets the value of the validFrom property. + * + * @return + * possible object is + * {@link XMLGregorianCalendar } + * + */ + public XMLGregorianCalendar getValidFrom() { + return validFrom; + } + + /** + * Sets the value of the validFrom property. + * + * @param value + * allowed object is + * {@link XMLGregorianCalendar } + * + */ + public void setValidFrom(XMLGregorianCalendar value) { + this.validFrom = value; + } + + /** + * Gets the value of the validTo property. + * + * @return + * possible object is + * {@link XMLGregorianCalendar } + * + */ + public XMLGregorianCalendar getValidTo() { + return validTo; + } + + /** + * Sets the value of the validTo property. + * + * @param value + * allowed object is + * {@link XMLGregorianCalendar } + * + */ + public void setValidTo(XMLGregorianCalendar value) { + this.validTo = value; + } + + /** + * Gets the value of the transactionLimit property. + * + * @return + * possible object is + * {@link BigInteger } + * + */ + public BigInteger getTransactionLimit() { + return transactionLimit; + } + + /** + * Sets the value of the transactionLimit property. + * + * @param value + * allowed object is + * {@link BigInteger } + * + */ + public void setTransactionLimit(BigInteger value) { + this.transactionLimit = value; + } + + /** + * Gets the value of the transactionLimitCurrency property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTransactionLimitCurrency() { + return transactionLimitCurrency; + } + + /** + * Sets the value of the transactionLimitCurrency property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTransactionLimitCurrency(String value) { + this.transactionLimitCurrency = value; + } + + /** + * Gets the value of the isJoint property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getIsJoint() { + return isJoint; + } + + /** + * Sets the value of the isJoint property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setIsJoint(String value) { + this.isJoint = value; + } + + /** + * Gets the value of the ischained property. + * + */ + public boolean isIschained() { + return ischained; + } + + /** + * Sets the value of the ischained property. + * + */ + public void setIschained(boolean value) { + this.ischained = value; + } + + /** + * Gets the value of the typePower property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getTypePower() { + return typePower; + } + + /** + * Sets the value of the typePower property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setTypePower(String value) { + this.typePower = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateType.java new file mode 100644 index 000000000..26597dc6b --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/MandateType.java @@ -0,0 +1,125 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for mandateType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="mandateType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element name="represented" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}representationPersonType"/>
    + *         <element name="representing" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}representationPersonType"/>
    + *         <element name="mandateContent" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}mandateContentType"/>
    + *       </sequence>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "mandateType", propOrder = { + "represented", + "representing", + "mandateContent" +}) +public class MandateType { + + @XmlElement(required = true) + protected RepresentationPersonType represented; + @XmlElement(required = true) + protected RepresentationPersonType representing; + @XmlElement(required = true) + protected MandateContentType mandateContent; + + /** + * Gets the value of the represented property. + * + * @return + * possible object is + * {@link RepresentationPersonType } + * + */ + public RepresentationPersonType getRepresented() { + return represented; + } + + /** + * Sets the value of the represented property. + * + * @param value + * allowed object is + * {@link RepresentationPersonType } + * + */ + public void setRepresented(RepresentationPersonType value) { + this.represented = value; + } + + /** + * Gets the value of the representing property. + * + * @return + * possible object is + * {@link RepresentationPersonType } + * + */ + public RepresentationPersonType getRepresenting() { + return representing; + } + + /** + * Sets the value of the representing property. + * + * @param value + * allowed object is + * {@link RepresentationPersonType } + * + */ + public void setRepresenting(RepresentationPersonType value) { + this.representing = value; + } + + /** + * Gets the value of the mandateContent property. + * + * @return + * possible object is + * {@link MandateContentType } + * + */ + public MandateContentType getMandateContent() { + return mandateContent; + } + + /** + * Sets the value of the mandateContent property. + * + * @param value + * allowed object is + * {@link MandateContentType } + * + */ + public void setMandateContent(MandateContentType value) { + this.mandateContent = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/ObjectFactory.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/ObjectFactory.java new file mode 100644 index 000000000..eca4ca3de --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/ObjectFactory.java @@ -0,0 +1,433 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.JAXBElement; +import javax.xml.bind.annotation.XmlElementDecl; +import javax.xml.bind.annotation.XmlRegistry; +import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import javax.xml.namespace.QName; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the eu.stork.peps.complex.attributes package. + *

    An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + private final static QName _Habilitation_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "habilitation"); + private final static QName _HasDegree_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "hasDegree"); + private final static QName _SpApplication_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "spApplication"); + private final static QName _Specialisation_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "specialisation"); + private final static QName _IsStudent_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isStudent"); + private final static QName _AQAA_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "AQAA"); + private final static QName _HCPType_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "HCPType"); + private final static QName _CanonicalResidenceAddress_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "canonicalResidenceAddress"); + private final static QName _AcTitle_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "acTitle"); + private final static QName _QualityAuthenticationAssuranceLevel_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "QualityAuthenticationAssuranceLevel"); + private final static QName _IsAcademicStaff_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isAcademicStaff"); + private final static QName _IsTeacherOf_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isTeacherOf"); + private final static QName _IsCourseCoordinator_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isCourseCoordinator"); + private final static QName _CanonicalRegisteredAddress_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "canonicalRegisteredAddress"); + private final static QName _SpCountry_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "spCountry"); + private final static QName _IsAdminStaff_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isAdminStaff"); + private final static QName _CitizenCountryCode_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "CitizenCountryCode"); + private final static QName _AttributeValue_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "AttributeValue"); + private final static QName _HasAccountInBank_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "hasAccountInBank"); + private final static QName _CountryCodeAddress_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "countryCodeAddress"); + private final static QName _Study_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "study"); + private final static QName _IsHealthCareProfessional_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "isHealthCareProfessional"); + private final static QName _Mandate_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "mandate"); + private final static QName _RequestedAttribute_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "RequestedAttribute"); + private final static QName _SpSector_QNAME = new QName("urn:eu:stork:names:tc:STORK:1.0:assertion", "spSector"); + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: eu.stork.peps.complex.attributes + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link RequestedAttributeType } + * + */ + public RequestedAttributeType createRequestedAttributeType() { + return new RequestedAttributeType(); + } + + /** + * Create an instance of {@link MandateType } + * + */ + public MandateType createMandateType() { + return new MandateType(); + } + + /** + * Create an instance of {@link HasAccountInBankType } + * + */ + public HasAccountInBankType createHasAccountInBankType() { + return new HasAccountInBankType(); + } + + /** + * Create an instance of {@link IsHealthCareProfessionalType } + * + */ + public IsHealthCareProfessionalType createIsHealthCareProfessionalType() { + return new IsHealthCareProfessionalType(); + } + + /** + * Create an instance of {@link IsAdminStaffType } + * + */ + public IsAdminStaffType createIsAdminStaffType() { + return new IsAdminStaffType(); + } + + /** + * Create an instance of {@link CanonicalAddressType } + * + */ + public CanonicalAddressType createCanonicalAddressType() { + return new CanonicalAddressType(); + } + + /** + * Create an instance of {@link IsCourseCoordinatorType } + * + */ + public IsCourseCoordinatorType createIsCourseCoordinatorType() { + return new IsCourseCoordinatorType(); + } + + /** + * Create an instance of {@link IsAcademicStaffType } + * + */ + public IsAcademicStaffType createIsAcademicStaffType() { + return new IsAcademicStaffType(); + } + + /** + * Create an instance of {@link IsTeacherOfType } + * + */ + public IsTeacherOfType createIsTeacherOfType() { + return new IsTeacherOfType(); + } + + /** + * Create an instance of {@link AcTitleType } + * + */ + public AcTitleType createAcTitleType() { + return new AcTitleType(); + } + + /** + * Create an instance of {@link IsStudentType } + * + */ + public IsStudentType createIsStudentType() { + return new IsStudentType(); + } + + /** + * Create an instance of {@link HasDegreeType } + * + */ + public HasDegreeType createHasDegreeType() { + return new HasDegreeType(); + } + + /** + * Create an instance of {@link HabilitationType } + * + */ + public HabilitationType createHabilitationType() { + return new HabilitationType(); + } + + /** + * Create an instance of {@link MandateContentType } + * + */ + public MandateContentType createMandateContentType() { + return new MandateContentType(); + } + + /** + * Create an instance of {@link RepresentationPersonType } + * + */ + public RepresentationPersonType createRepresentationPersonType() { + return new RepresentationPersonType(); + } + + /** + * Create an instance of {@link Habilitation } + * + */ + public Habilitation createHabilitation() { + return new Habilitation(); + } + + /** + * Create an instance of {@link IsHCPType } + * + */ + public IsHCPType createIsHCPType() { + return new IsHCPType(); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link HabilitationType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "habilitation") + public JAXBElement createHabilitation(HabilitationType value) { + return new JAXBElement(_Habilitation_QNAME, HabilitationType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link HasDegreeType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "hasDegree") + public JAXBElement createHasDegree(HasDegreeType value) { + return new JAXBElement(_HasDegree_QNAME, HasDegreeType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "spApplication") + public JAXBElement createSpApplication(String value) { + return new JAXBElement(_SpApplication_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "specialisation") + public JAXBElement createSpecialisation(String value) { + return new JAXBElement(_Specialisation_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsStudentType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isStudent") + public JAXBElement createIsStudent(IsStudentType value) { + return new JAXBElement(_IsStudent_QNAME, IsStudentType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "AQAA") + public JAXBElement createAQAA(Integer value) { + return new JAXBElement(_AQAA_QNAME, Integer.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "HCPType") + public JAXBElement createHCPType(String value) { + return new JAXBElement(_HCPType_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalAddressType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "canonicalResidenceAddress") + public JAXBElement createCanonicalResidenceAddress(CanonicalAddressType value) { + return new JAXBElement(_CanonicalResidenceAddress_QNAME, CanonicalAddressType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link AcTitleType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "acTitle") + public JAXBElement createAcTitle(AcTitleType value) { + return new JAXBElement(_AcTitle_QNAME, AcTitleType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Integer }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "QualityAuthenticationAssuranceLevel") + public JAXBElement createQualityAuthenticationAssuranceLevel(Integer value) { + return new JAXBElement(_QualityAuthenticationAssuranceLevel_QNAME, Integer.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsAcademicStaffType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isAcademicStaff") + public JAXBElement createIsAcademicStaff(IsAcademicStaffType value) { + return new JAXBElement(_IsAcademicStaff_QNAME, IsAcademicStaffType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsTeacherOfType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isTeacherOf") + public JAXBElement createIsTeacherOf(IsTeacherOfType value) { + return new JAXBElement(_IsTeacherOf_QNAME, IsTeacherOfType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsCourseCoordinatorType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isCourseCoordinator") + public JAXBElement createIsCourseCoordinator(IsCourseCoordinatorType value) { + return new JAXBElement(_IsCourseCoordinator_QNAME, IsCourseCoordinatorType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalAddressType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "canonicalRegisteredAddress") + public JAXBElement createCanonicalRegisteredAddress(CanonicalAddressType value) { + return new JAXBElement(_CanonicalRegisteredAddress_QNAME, CanonicalAddressType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "spCountry") + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + public JAXBElement createSpCountry(String value) { + return new JAXBElement(_SpCountry_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsAdminStaffType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isAdminStaff") + public JAXBElement createIsAdminStaff(IsAdminStaffType value) { + return new JAXBElement(_IsAdminStaff_QNAME, IsAdminStaffType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "CitizenCountryCode") + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + public JAXBElement createCitizenCountryCode(String value) { + return new JAXBElement(_CitizenCountryCode_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "AttributeValue") + public JAXBElement createAttributeValue(Object value) { + return new JAXBElement(_AttributeValue_QNAME, Object.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link HasAccountInBankType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "hasAccountInBank") + public JAXBElement createHasAccountInBank(HasAccountInBankType value) { + return new JAXBElement(_HasAccountInBank_QNAME, HasAccountInBankType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "countryCodeAddress") + @XmlJavaTypeAdapter(CollapsedStringAdapter.class) + public JAXBElement createCountryCodeAddress(String value) { + return new JAXBElement(_CountryCodeAddress_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "study") + public JAXBElement createStudy(String value) { + return new JAXBElement(_Study_QNAME, String.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link IsHealthCareProfessionalType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "isHealthCareProfessional") + public JAXBElement createIsHealthCareProfessional(IsHealthCareProfessionalType value) { + return new JAXBElement(_IsHealthCareProfessional_QNAME, IsHealthCareProfessionalType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link MandateType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "mandate") + public JAXBElement createMandate(MandateType value) { + return new JAXBElement(_Mandate_QNAME, MandateType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link RequestedAttributeType }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "RequestedAttribute") + public JAXBElement createRequestedAttribute(RequestedAttributeType value) { + return new JAXBElement(_RequestedAttribute_QNAME, RequestedAttributeType.class, null, value); + } + + /** + * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}} + * + */ + @XmlElementDecl(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", name = "spSector") + public JAXBElement createSpSector(String value) { + return new JAXBElement(_SpSector_QNAME, String.class, null, value); + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RepresentationPersonType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RepresentationPersonType.java new file mode 100644 index 000000000..b1d993f89 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RepresentationPersonType.java @@ -0,0 +1,289 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

    Java class for representationPersonType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="representationPersonType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <choice>
    + *         <sequence>
    + *           <element name="eIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="givenName" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="surname" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="dateOfBirth" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         </sequence>
    + *         <sequence>
    + *           <element name="eLPIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="address" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *           <element name="canonicalAddress" type="{urn:eu:stork:names:tc:STORK:1.0:assertion}canonicalAddressType"/>
    + *           <element name="type" type="{http://www.w3.org/2001/XMLSchema}string"/>
    + *         </sequence>
    + *       </choice>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "representationPersonType", propOrder = { + "eIdentifier", + "givenName", + "surname", + "dateOfBirth", + "elpIdentifier", + "name", + "address", + "canonicalAddress", + "type" +}) +public class RepresentationPersonType { + + protected String eIdentifier; + protected String givenName; + protected String surname; + protected String dateOfBirth; + @XmlElement(name = "eLPIdentifier") + protected String elpIdentifier; + protected String name; + protected String address; + protected CanonicalAddressType canonicalAddress; + protected String type; + + /** + * Gets the value of the eIdentifier property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getEIdentifier() { + return eIdentifier; + } + + /** + * Sets the value of the eIdentifier property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setEIdentifier(String value) { + this.eIdentifier = value; + } + + /** + * Gets the value of the givenName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getGivenName() { + return givenName; + } + + /** + * Sets the value of the givenName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setGivenName(String value) { + this.givenName = value; + } + + /** + * Gets the value of the surname property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getSurname() { + return surname; + } + + /** + * Sets the value of the surname property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setSurname(String value) { + this.surname = value; + } + + /** + * Gets the value of the dateOfBirth property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getDateOfBirth() { + return dateOfBirth; + } + + /** + * Sets the value of the dateOfBirth property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setDateOfBirth(String value) { + this.dateOfBirth = value; + } + + /** + * Gets the value of the elpIdentifier property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getELPIdentifier() { + return elpIdentifier; + } + + /** + * Sets the value of the elpIdentifier property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setELPIdentifier(String value) { + this.elpIdentifier = value; + } + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the address property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getAddress() { + return address; + } + + /** + * Sets the value of the address property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setAddress(String value) { + this.address = value; + } + + /** + * Gets the value of the canonicalAddress property. + * + * @return + * possible object is + * {@link CanonicalAddressType } + * + */ + public CanonicalAddressType getCanonicalAddress() { + return canonicalAddress; + } + + /** + * Sets the value of the canonicalAddress property. + * + * @param value + * allowed object is + * {@link CanonicalAddressType } + * + */ + public void setCanonicalAddress(CanonicalAddressType value) { + this.canonicalAddress = value; + } + + /** + * Gets the value of the type property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getType() { + return type; + } + + /** + * Sets the value of the type property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setType(String value) { + this.type = value; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RequestedAttributeType.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RequestedAttributeType.java new file mode 100644 index 000000000..6a7c0b443 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/RequestedAttributeType.java @@ -0,0 +1,212 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + + +package eu.stork.peps.complex.attributes; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAnyAttribute; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSchemaType; +import javax.xml.bind.annotation.XmlType; +import javax.xml.namespace.QName; + + +/** + *

    Java class for RequestedAttributeType complex type. + * + *

    The following schema fragment specifies the expected content contained within this class. + * + *

    + * <complexType name="RequestedAttributeType">
    + *   <complexContent>
    + *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
    + *       <sequence>
    + *         <element ref="{urn:eu:stork:names:tc:STORK:1.0:assertion}AttributeValue" maxOccurs="unbounded" minOccurs="0"/>
    + *       </sequence>
    + *       <attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
    + *       <attribute name="NameFormat" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
    + *       <attribute name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" />
    + *       <attribute name="isRequired" type="{http://www.w3.org/2001/XMLSchema}boolean" />
    + *       <anyAttribute processContents='lax' namespace='##other'/>
    + *     </restriction>
    + *   </complexContent>
    + * </complexType>
    + * 
    + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "RequestedAttributeType", propOrder = { + "attributeValue" +}) +public class RequestedAttributeType { + + @XmlElement(name = "AttributeValue") + protected List attributeValue; + @XmlAttribute(name = "Name", required = true) + protected String name; + @XmlAttribute(name = "NameFormat", required = true) + @XmlSchemaType(name = "anyURI") + protected String nameFormat; + @XmlAttribute(name = "FriendlyName") + protected String friendlyName; + @XmlAttribute(name = "isRequired") + protected Boolean isRequired; + @XmlAnyAttribute + private Map otherAttributes = new HashMap(); + + /** + * Gets the value of the attributeValue property. + * + *

    + * This accessor method returns a reference to the live list, + * not a snapshot. Therefore any modification you make to the + * returned list will be present inside the JAXB object. + * This is why there is not a set method for the attributeValue property. + * + *

    + * For example, to add a new item, do as follows: + *

    +     *    getAttributeValue().add(newItem);
    +     * 
    + * + * + *

    + * Objects of the following type(s) are allowed in the list + * {@link Object } + * + * + */ + public List getAttributeValue() { + if (attributeValue == null) { + attributeValue = new ArrayList(); + } + return this.attributeValue; + } + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the nameFormat property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getNameFormat() { + return nameFormat; + } + + /** + * Sets the value of the nameFormat property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setNameFormat(String value) { + this.nameFormat = value; + } + + /** + * Gets the value of the friendlyName property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getFriendlyName() { + return friendlyName; + } + + /** + * Sets the value of the friendlyName property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setFriendlyName(String value) { + this.friendlyName = value; + } + + /** + * Gets the value of the isRequired property. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isIsRequired() { + return isRequired; + } + + /** + * Sets the value of the isRequired property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setIsRequired(Boolean value) { + this.isRequired = value; + } + + /** + * Gets a map that contains attributes that aren't bound to any typed property on this class. + * + *

    + * the map is keyed by the name of the attribute and + * the value is the string value of the attribute. + * + * the map returned by this method is live, and you can add new attribute + * by updating the map directly. Because of this design, there's no setter. + * + * + * @return + * always non-null + */ + public Map getOtherAttributes() { + return otherAttributes; + } + +} diff --git a/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/package-info.java b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/package-info.java new file mode 100644 index 000000000..47e225d22 --- /dev/null +++ b/id/server/stork2-commons/src/main/java/eu/stork/peps/complex/attributes/package-info.java @@ -0,0 +1,9 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 +// See http://java.sun.com/xml/jaxb +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2014.02.17 at 10:36:59 AM GMT +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "urn:eu:stork:names:tc:STORK:1.0:assertion", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) +package eu.stork.peps.complex.attributes; diff --git a/id/server/stork2-commons/src/main/resources/.svn/all-wcprops b/id/server/stork2-commons/src/main/resources/.svn/all-wcprops new file mode 100644 index 000000000..7f5879720 --- /dev/null +++ b/id/server/stork2-commons/src/main/resources/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 64 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/resources +END +log4j.xml +K 25 +svn:wc:ra_dav:version-url +V 73 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/main/resources/log4j.xml +END +StorkcomplexAttributes.xsd +K 25 +svn:wc:ra_dav:version-url +V 91 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/main/resources/StorkcomplexAttributes.xsd +END diff --git a/id/server/stork2-commons/src/main/resources/.svn/entries b/id/server/stork2-commons/src/main/resources/.svn/entries new file mode 100644 index 000000000..3cafa50cf --- /dev/null +++ b/id/server/stork2-commons/src/main/resources/.svn/entries @@ -0,0 +1,96 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/main/resources +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +log4j.xml +file + + + + +2013-12-20T12:27:56.554475Z +aa8c46e41a236b8c7049713b3eeecc49 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +660 + +StorkcomplexAttributes.xsd +file + + + + +2014-03-05T09:36:07.834515Z +312be97fd22ecb2f274bf9fdebd85b29 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +10938 + diff --git a/id/server/stork2-commons/src/main/resources/.svn/text-base/StorkcomplexAttributes.xsd.svn-base b/id/server/stork2-commons/src/main/resources/.svn/text-base/StorkcomplexAttributes.xsd.svn-base new file mode 100644 index 000000000..3c56bd318 --- /dev/null +++ b/id/server/stork2-commons/src/main/resources/.svn/text-base/StorkcomplexAttributes.xsd.svn-base @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/id/server/stork2-commons/src/main/resources/.svn/text-base/log4j.xml.svn-base b/id/server/stork2-commons/src/main/resources/.svn/text-base/log4j.xml.svn-base new file mode 100644 index 000000000..8bce0bec0 --- /dev/null +++ b/id/server/stork2-commons/src/main/resources/.svn/text-base/log4j.xml.svn-base @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/id/server/stork2-commons/src/main/resources/StorkcomplexAttributes.xsd b/id/server/stork2-commons/src/main/resources/StorkcomplexAttributes.xsd new file mode 100644 index 000000000..3c56bd318 --- /dev/null +++ b/id/server/stork2-commons/src/main/resources/StorkcomplexAttributes.xsd @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/id/server/stork2-commons/src/main/resources/log4j.xml b/id/server/stork2-commons/src/main/resources/log4j.xml new file mode 100644 index 000000000..8bce0bec0 --- /dev/null +++ b/id/server/stork2-commons/src/main/resources/log4j.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/id/server/stork2-commons/src/test/.svn/all-wcprops b/id/server/stork2-commons/src/test/.svn/all-wcprops new file mode 100644 index 000000000..20c6abf40 --- /dev/null +++ b/id/server/stork2-commons/src/test/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 54 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test +END diff --git a/id/server/stork2-commons/src/test/.svn/entries b/id/server/stork2-commons/src/test/.svn/entries new file mode 100644 index 000000000..2340f1ba0 --- /dev/null +++ b/id/server/stork2-commons/src/test/.svn/entries @@ -0,0 +1,34 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +resources +dir + +java +dir + diff --git a/id/server/stork2-commons/src/test/java/.svn/all-wcprops b/id/server/stork2-commons/src/test/java/.svn/all-wcprops new file mode 100644 index 000000000..0539c7776 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 59 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test/java +END diff --git a/id/server/stork2-commons/src/test/java/.svn/entries b/id/server/stork2-commons/src/test/java/.svn/entries new file mode 100644 index 000000000..022ccbba6 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test/java +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +eu +dir + diff --git a/id/server/stork2-commons/src/test/java/eu/.svn/all-wcprops b/id/server/stork2-commons/src/test/java/eu/.svn/all-wcprops new file mode 100644 index 000000000..1074db391 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 62 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test/java/eu +END diff --git a/id/server/stork2-commons/src/test/java/eu/.svn/entries b/id/server/stork2-commons/src/test/java/eu/.svn/entries new file mode 100644 index 000000000..b692975a3 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test/java/eu +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +stork +dir + diff --git a/id/server/stork2-commons/src/test/java/eu/stork/.svn/all-wcprops b/id/server/stork2-commons/src/test/java/eu/stork/.svn/all-wcprops new file mode 100644 index 000000000..7b9321684 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 68 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test/java/eu/stork +END diff --git a/id/server/stork2-commons/src/test/java/eu/stork/.svn/entries b/id/server/stork2-commons/src/test/java/eu/stork/.svn/entries new file mode 100644 index 000000000..1b9026249 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test/java/eu/stork +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +peps +dir + diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/all-wcprops b/id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/all-wcprops new file mode 100644 index 000000000..1a4a3889b --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/all-wcprops @@ -0,0 +1,5 @@ +K 25 +svn:wc:ra_dav:version-url +V 73 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test/java/eu/stork/peps +END diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/entries b/id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/entries new file mode 100644 index 000000000..568fa8c62 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/.svn/entries @@ -0,0 +1,31 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test/java/eu/stork/peps +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +tests +dir + diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/all-wcprops b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/all-wcprops new file mode 100644 index 000000000..fd0288d3a --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/all-wcprops @@ -0,0 +1,59 @@ +K 25 +svn:wc:ra_dav:version-url +V 79 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test/java/eu/stork/peps/tests +END +AttributeSourceTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 108 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/test/java/eu/stork/peps/tests/AttributeSourceTestCase.java +END +ComplexAttributesMarshalling.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/CITnet/svn/STORK2/!svn/ver/721/trunk/Commons/src/test/java/eu/stork/peps/tests/ComplexAttributesMarshalling.java +END +PEPSUtilTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 100 +/CITnet/svn/STORK2/!svn/ver/96/trunk/Commons/src/test/java/eu/stork/peps/tests/PEPSUtilTestCase.java +END +PersonalAttributeTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 109 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/test/java/eu/stork/peps/tests/PersonalAttributeTestCase.java +END +package-info.java +K 25 +svn:wc:ra_dav:version-url +V 96 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/test/java/eu/stork/peps/tests/package-info.java +END +DateUtilTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 100 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/test/java/eu/stork/peps/tests/DateUtilTestCase.java +END +AttributeProvidersMapTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/712/trunk/Commons/src/test/java/eu/stork/peps/tests/AttributeProvidersMapTestCase.java +END +AttributeUtilTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 105 +/CITnet/svn/STORK2/!svn/ver/96/trunk/Commons/src/test/java/eu/stork/peps/tests/AttributeUtilTestCase.java +END +PersonalAttributeListTestCase.java +K 25 +svn:wc:ra_dav:version-url +V 114 +/CITnet/svn/STORK2/!svn/ver/484/trunk/Commons/src/test/java/eu/stork/peps/tests/PersonalAttributeListTestCase.java +END diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/entries b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/entries new file mode 100644 index 000000000..7c5cf8a9d --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/entries @@ -0,0 +1,334 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test/java/eu/stork/peps/tests +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +PersonalAttributeTestCase.java +file + + + + +2013-12-20T12:27:56.518475Z +77386880d5ffadd21c9b3a3c7d51b990 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +5449 + +package-info.java +file + + + + +2013-12-20T12:27:56.518475Z +04f136539bda0caa3d5ccdfee912cfce +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +92 + +DateUtilTestCase.java +file + + + + +2013-12-20T12:27:56.518475Z +244cc6104660a7835dbf72dadb305d71 +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +8907 + +AttributeProvidersMapTestCase.java +file + + + + +2014-03-05T09:36:07.758515Z +1490c44149a87308c4a6cc0e2af88a85 +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +3995 + +AttributeUtilTestCase.java +file + + + + +2013-12-20T12:27:56.518475Z +6037f125adf7f4c2f6873a0d99ab0705 +2013-11-01T20:35:30.927048Z +96 +emferreri + + + + + + + + + + + + + + + + + + + + + +16318 + +PersonalAttributeListTestCase.java +file + + + + +2014-01-21T08:38:55.140702Z +ae552dce95a6b83d15e381306e2f5e59 +2014-01-15T09:44:59.969756Z +484 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +24508 + +AttributeSourceTestCase.java +file + + + + +2014-03-05T09:36:07.758515Z +1505085e4fd6c684d4f6a8db3d5ba233 +2014-03-03T15:10:40.224759Z +712 +emrepisja + + + + + + + + + + + + + + + + + + + + + +2465 + +ComplexAttributesMarshalling.java +file + + + + +2014-03-05T09:36:07.758515Z +aca1d76d312b0dc5026f852bb14ab5a5 +2014-03-04T14:10:03.192908Z +721 +emrepisja + + + + + + + + + + + + + + + + + + + + + +6363 + +PEPSUtilTestCase.java +file + + + + +2013-12-20T12:27:56.518475Z +f54beadeab9af936f44af326eb1116d2 +2013-11-01T20:35:30.927048Z +96 +emferreri + + + + + + + + + + + + + + + + + + + + + +16714 + diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeProvidersMapTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeProvidersMapTestCase.java.svn-base new file mode 100644 index 000000000..89f5adbed --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeProvidersMapTestCase.java.svn-base @@ -0,0 +1,134 @@ +package eu.stork.peps.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import eu.stork.peps.auth.commons.AttributeProvider; +import eu.stork.peps.auth.commons.AttributeProvidersMap; +import eu.stork.peps.auth.commons.AttributeSource; +import eu.stork.peps.auth.commons.Country; +import eu.stork.peps.auth.commons.IAttributeProvidersMap; +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttributeList; + +/** + * The AttributeSource's Test Case. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: $, $Date: $ + */ +public class AttributeProvidersMapTestCase { + + @Test + public void testObjectOK1() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(source) ) { + outcome = true; + } + + assertTrue(outcome); + } + + @Test + public void testObjectOK2() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(source) ) { + if ( map.get(source)!=null ) { + outcome = true; + } + } + + assertTrue(outcome); + } + + @Test + public void testObjectOK3() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + outcome = true; + } + + assertTrue(outcome); + } + + @Test + public void testObjectOK4() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + if ( map.get(target)!=null ) { + outcome = true; + } + } + + assertTrue(outcome); + } + + @Test + public void testObjectNOK1() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new Country("ID1", "Name 1"), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + outcome = true; + } + + assertFalse(outcome); + } + + @Test + public void testObjectNOK2() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new AttributeProvider("ID2", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + outcome = true; + } + + assertFalse(outcome); + } +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeSourceTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeSourceTestCase.java.svn-base new file mode 100644 index 000000000..e0f685ade --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeSourceTestCase.java.svn-base @@ -0,0 +1,88 @@ +package eu.stork.peps.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import eu.stork.peps.auth.commons.AttributeProvider; +import eu.stork.peps.auth.commons.AttributeSource; +import eu.stork.peps.auth.commons.Country; + +/** + * The AttributeSource's Test Case. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: $, $Date: $ + */ +public final class AttributeSourceTestCase { + private final AttributeSource ap1 = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL1"); + private final AttributeSource ap2 = new AttributeSource(new AttributeProvider("ID2", "Name 2", null), "URL2"); + private final AttributeSource ap3 = new AttributeSource(new AttributeProvider("ID1", "Name 2", null), "URL2"); + private final AttributeSource ap4 = new AttributeSource(new AttributeProvider("ID1", "Name 2", null), "URL1"); + private final AttributeSource ap5 = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL1"); + + private final AttributeSource c1 = new AttributeSource(new Country("ID1", "Name 1"), "URL1"); + private final AttributeSource c2 = new AttributeSource(new Country("ID2", "Name 2"), "URL2"); + private final AttributeSource c3 = new AttributeSource(new Country("ID1", "Name 2"), "URL2"); + private final AttributeSource c4 = new AttributeSource(new Country("ID1", "Name 2"), "URL1"); + private final AttributeSource c5 = new AttributeSource(new Country("ID1", "Name 1"), "URL1"); + + @Test + public void testNotEquals1() { + assertFalse(ap1.equals(ap2)); + } + + @Test + public void testNotEquals2() { + assertFalse(ap1.equals(c1)); + } + + @Test + public void testNotEquals3() { + assertFalse(c1.equals(c2)); + } + + @Test + public void testEquals1() { + assertTrue(ap1.equals(ap3)); + } + + @Test + public void testEquals2() { + assertTrue(ap1.equals(ap4)); + } + + @Test + public void testEquals3() { + assertTrue(ap1.equals(ap5)); + } + + @Test + public void testEquals4() { + assertTrue(c1.equals(c3)); + } + + @Test + public void testEquals5() { + assertTrue(c1.equals(c4)); + } + + @Test + public void testEquals6() { + assertTrue(c1.equals(c5)); + } + + @Test + public void testEquals7() { + final Object obj = ap5; + assertTrue(ap1.equals(obj)); + } + + @Test + public void testEquals8() { + final Object obj = c5; + assertTrue(c1.equals(obj)); + } +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeUtilTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeUtilTestCase.java.svn-base new file mode 100644 index 000000000..77fc4b9c2 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/AttributeUtilTestCase.java.svn-base @@ -0,0 +1,537 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Test; + +import eu.stork.peps.auth.commons.AttributeUtil; +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSValues; +import eu.stork.peps.auth.commons.PersonalAttributeList; + +/** + * The AttributeUtil's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com + * + * @version $Revision: $, $Date: $ + */ +public final class AttributeUtilTestCase { + + /** + * Empty String to be used on the tests. + */ + private static final String EMPTY_STRING = ""; + + /** + * Tuple value sample to be used on the tests. + */ + private static final String[] TUPLE_STRING = new String[] { "age", "true", + "[18]", "Available" }; + + /** + * Complex value to be used on escape/unescape tests. + */ + private static final String COMPLEX_VAL = "postalCode=4100," + + "apartmentNumber=A,state=Porto,countryCodeAddress=PT,streetNumber=379," + + "streetName=Avenida Sidonio Pais,town=Porto,"; + + /** + * Escaped Complex value to be used on escape/unescape tests. + */ + private static final String ESC_COMPLEX_VAL = "postalCode=4100%44" + + "apartmentNumber=A%44state=Porto%44countryCodeAddress=PT%44" + + "streetNumber=379%44streetName=Avenida Sidonio Pais%44town=Porto%44"; + + /** + * Simple value to be used on escape/unescape tests. + */ + private static final String SIMPLE_VAL = "Avenida da Boavista, Porto"; + + /** + * Escaped simple value to be used on escape/unescape tests. + */ + private static final String ESC_SIMPLE_VAL = "Avenida da Boavista%44 Porto"; + + /** + * Simple text to be used on escape/unescape tests. Must match the escaped + * text. + */ + private static final String SIMPLE_TEXT = "John Doe"; + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given complex + * attribute value (canonical address' example attribute value). + */ + @Test + public void testEscapeSpecialCharsComplexVal() { + assertEquals(AttributeUtil.escape(COMPLEX_VAL), ESC_COMPLEX_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given + * attribute value. + */ + @Test + public void testEscapeSpecialCharsVal() { + assertEquals(AttributeUtil.escape(SIMPLE_VAL), ESC_SIMPLE_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given simple + * text: no special characters to escape. + */ + @Test + public void testEscapeNormalChars() { + assertEquals(AttributeUtil.escape(SIMPLE_TEXT), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#unescape(String)} method for the given + * escape complex attribute value (canonical address' example attribute + * value). + */ + @Test + public void testUnescapeSpecialCharsComplexVal() { + assertEquals(AttributeUtil.unescape(ESC_COMPLEX_VAL), COMPLEX_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given escape + * attribute value. + */ + @Test + public void testUnescapeSpecialCharsVal() { + assertEquals(AttributeUtil.unescape(ESC_SIMPLE_VAL), SIMPLE_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given simple + * text: no special characters to unescape. + */ + @Test + public void testUnescapeNormalChars() { + assertEquals(AttributeUtil.unescape(SIMPLE_TEXT), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#appendIfNotNull(StringBuilder, Object)} + * method for the given empty string. + */ + @Test + public void testAppendIfNotNullEmptyStr() { + final StringBuilder strBuilder = new StringBuilder(SIMPLE_TEXT); + AttributeUtil.appendIfNotNull(strBuilder, EMPTY_STRING); + assertEquals(strBuilder.toString(), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#appendIfNotNull(StringBuilder, Object)} + * method for the given string. + */ + @Test + public void testAppendIfNotNullStr() { + final StringBuilder strBuilder = new StringBuilder(); + AttributeUtil.appendIfNotNull(strBuilder, SIMPLE_TEXT); + assertEquals(strBuilder.toString(), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#appendIfNotNull(StringBuilder, Object)} + * method for the given null value. + */ + @Test + public void testAppendIfNotNull() { + final StringBuilder strBuilder = new StringBuilder(); + AttributeUtil.appendIfNotNull(strBuilder, null); + assertEquals(strBuilder.toString(), EMPTY_STRING); + } + + /** + * Tests the {@link AttributeUtil#listToString(List, String)} method for the + * given List with two values. + */ + @Test + public void testListToStringTwoVals() { + final List vals = new ArrayList(); + vals.add(SIMPLE_VAL); + vals.add(SIMPLE_TEXT); + + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append(SIMPLE_TEXT); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + assertEquals( + AttributeUtil.listToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#listToString(List, String)} method for the + * given List with one values. + */ + @Test + public void testListToStringOneVal() { + final List vals = new ArrayList(); + vals.add(SIMPLE_VAL); + + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + assertEquals( + AttributeUtil.listToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#listToString(List, String)} method for the + * given List with one value. + */ + @Test + public void testListToStringEmptyVal() { + final List vals = new ArrayList(); + + final StringBuilder strBuilder = new StringBuilder(); + + assertEquals( + AttributeUtil.listToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#mapToString(java.util.Map, String)} method + * for the given Map with one value. + */ + @Test + public void testMapToStringOneVal() { + final Map vals = new HashMap(); + vals.put("CanonicalAddress", COMPLEX_VAL); + + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("CanonicalAddress="); + strBuilder.append(ESC_COMPLEX_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + assertEquals(AttributeUtil.mapToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#mapToString(java.util.Map, String)} method + * for the given empty Map. + */ + @Test + public void testMapToStringEmptyVal() { + final Map vals = new HashMap(); + + final StringBuilder strBuilder = new StringBuilder(); + + assertEquals(AttributeUtil.mapToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * invalid List. + */ + @Test + public void testIsValidValueInvalidList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append("]"); + assertFalse(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * null value. + */ + @Test + public void testIsValidValueNullList() { + assertFalse(AttributeUtil.isValidValue(null)); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * empty List. + */ + @Test + public void testIsValidValueEmptyList() { + assertTrue(AttributeUtil.isValidValue("[]")); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * empty List. + */ + @Test + public void testIsValidValueEmptyCommaList() { + assertTrue(AttributeUtil.isValidValue("[,]")); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one simple value List. + */ + @Test + public void testIsValidValueOneValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one simple value List. + */ + @Test + public void testIsValidValueOneValueCommaList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one complex value List. + */ + @Test + public void testIsValidValueOneComplexValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_COMPLEX_VAL); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one complex value List. + */ + @Test + public void testIsValidValueOneComplexValueCommaList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_COMPLEX_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * multi value List. + */ + @Test + public void testIsValidValueMultiValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append(SIMPLE_TEXT); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * invalid multi value List. + */ + @Test + public void testIsValidValueInvalidMultiValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append(SIMPLE_TEXT); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertFalse(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * true type. + */ + @Test + public void testIsValidTypetrue() { + assertTrue(AttributeUtil.isValidType("true")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * True type. + */ + @Test + public void testIsValidTypeTrue() { + assertTrue(AttributeUtil.isValidType("True")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * TRUE type. + */ + @Test + public void testIsValidTypeTRUE() { + assertTrue(AttributeUtil.isValidType("TRUE")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * invalid type. + */ + @Test + public void testIsValidTypeInvalidType() { + assertFalse(AttributeUtil.isValidType("str")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * false type. + */ + @Test + public void testIsValidTypefalse() { + assertTrue(AttributeUtil.isValidType("false")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * False type. + */ + @Test + public void testIsValidTypeFalse() { + assertTrue(AttributeUtil.isValidType("False")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * FALSE type. + */ + @Test + public void testIsValidTypeFALSEVal() { + assertTrue(AttributeUtil.isValidType("False")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * null. + */ + @Test + public void testIsValidTypeNullVal() { + assertFalse(AttributeUtil.isValidType(null)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given valid tuple. + */ + @Test + public void testHasValidTuples() { + assertTrue(AttributeUtil.hasValidTuples(TUPLE_STRING)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given invalid tuple. + */ + @Test + public void testHasValidTuplesInvalid() { + final String[] tuple = new String[]{"name", "type"}; + assertFalse(AttributeUtil.hasValidTuples(tuple)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given invalid tuple with valid size. + */ + @Test + public void testHasValidTuplesSameSizeInvalidValues() { + final String[] tuple = new String[] { "age", "type", "[18]", "Available"}; + assertFalse(AttributeUtil.hasValidTuples(tuple)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given null value. + */ + @Test + public void testHasValidTuplesNull() { + assertFalse(AttributeUtil.hasValidTuples(null)); + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given attribute list.. + */ + @Test + public void testCheckMandatoryAttributes() { + final IPersonalAttributeList attrList = new PersonalAttributeList(); + attrList.populate("isAgeOver:true:[18,]:Available;"); + assertTrue(AttributeUtil.checkMandatoryAttributes(attrList)); + + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given null value. + */ + @Test(expected = NullPointerException.class) + public void testCheckMandatoryAttributesNullAttrList() { + assertTrue(AttributeUtil.checkMandatoryAttributes(null)); + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given empty attribute list. + */ + @Test + public void testCheckMandatoryAttributesEmptyAttrList() { + final IPersonalAttributeList attrList = new PersonalAttributeList(); + assertTrue(AttributeUtil.checkMandatoryAttributes(attrList)); + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given attribute list (missing mandatory attribute). + */ + @Test + public void testCheckMandatoryAttributesMissingAttr() { + final IPersonalAttributeList attrList = new PersonalAttributeList(); + attrList.populate("isAgeOver:true:[]:NotAvailable;"); + assertFalse(AttributeUtil.checkMandatoryAttributes(attrList)); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/ComplexAttributesMarshalling.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/ComplexAttributesMarshalling.java.svn-base new file mode 100644 index 000000000..c7e195fa6 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/ComplexAttributesMarshalling.java.svn-base @@ -0,0 +1,187 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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. + * + * --- + * + * Test cases for marshalling complex attributes. + * + * Implemented are two testcases for marshalling and unmarshalling. These testcases are + * for canonical residenc address and has bank account. + */ + +package eu.stork.peps.tests; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.transform.stream.StreamSource; + +import org.junit.Test; + +import eu.stork.peps.complex.attributes.CanonicalAddressType; +import eu.stork.peps.complex.attributes.HasAccountInBankType; +import eu.stork.peps.complex.attributes.ObjectFactory; + +/** + * @author Advania + * + * Examples on how to use the jaxb marshaller. + * + * The classes are created from the StorkcomplexAttributes.xsd schema located in resources. + * + * @version $Revision: 1.00 $, $Date: 2014-17-02 11:15:00 $ + * + */ + +public class ComplexAttributesMarshalling { + + /** + * Test marshalling canonical address + * + * + * IS + * Reykjavik + * RVK + * Reykjavik + * 101 + * Laugavegur + * 1 + * 10 + * + */ + @Test + public void testMarshallCanonicalResidencAddress() + { + try + { + final CanonicalAddressType object = new CanonicalAddressType(); + object.setApartmentNumber("10"); + object.setCountryCodeAddress("IS"); + object.setMunicipalityCode("RVK"); + object.setPostalCode("101"); + object.setState("Reykjavik"); + object.setStreetName("Laugavegur"); + object.setStreetNumber("1"); + object.setTown("Reykjavik"); + + final JAXBContext context = JAXBContext.newInstance(CanonicalAddressType.class); + final Marshaller m = context.createMarshaller(); + m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + final ObjectFactory objf = new ObjectFactory(); + + m.marshal(objf.createCanonicalResidenceAddress(object), new FileOutputStream("CanonicalAddressType.xml")); + m.marshal(objf.createCanonicalResidenceAddress(object), System.out); + } + catch (JAXBException | FileNotFoundException e) + { + e.printStackTrace(); + } + } + + /** + * Test unmarshalling canonical address + * + * + * IS + * Reykjavik + * RVK + * Reykjavik + * 101 + * Laugavegur + * 1 + * 10 + * + */ + @Test + public void testUnmarshallCanonicalAddress() + { + JAXBContext uContext; + try + { + uContext = JAXBContext.newInstance(CanonicalAddressType.class); + final Unmarshaller u = uContext.createUnmarshaller(); + final File file = new File("CanonicalAddressType.xml"); + + final JAXBElement root = u.unmarshal(new StreamSource(file), CanonicalAddressType.class); + final CanonicalAddressType foo = root.getValue(); + + final String A = foo.getStreetName(); + final String B = foo.getStreetNumber(); + + System.out.println("Streetname: " + A); + System.out.println("Streetnumber: " + B); + + } + catch (final JAXBException e) + { + e.printStackTrace(); + } + } + + /** + * Test marshalling has bank account + * + * + * Arion + * 3 + * + */ + @Test + public void testMarshallHasBankAccount() + { + try + { + final HasAccountInBankType object = new HasAccountInBankType(); + object.setAQAA(3); + object.setBankName("Arion Bank"); + final JAXBContext context = JAXBContext.newInstance(HasAccountInBankType.class); + final Marshaller m = context.createMarshaller(); + final ObjectFactory o = new ObjectFactory(); + m.marshal(o.createHasAccountInBank(object), new FileOutputStream ("hasbankaccount.xml")); + m.marshal(o.createHasAccountInBank(object), System.out); + + } catch (JAXBException | FileNotFoundException e) { + e.printStackTrace(); + } + } + /** + * Test unmarshalling has bank account + * + * + * Arion + * 3 + * + */ + @Test + public void testUnmarshallHasBankAccount() + { + try + { + final JAXBContext context = JAXBContext.newInstance(HasAccountInBankType.class); + final Unmarshaller um = context.createUnmarshaller(); + final File file = new File("hasbankaccount.xml"); + final JAXBElement root = um.unmarshal(new StreamSource(file), HasAccountInBankType.class); + final HasAccountInBankType foo = root.getValue(); + System.out.println(foo.getBankName()); + } catch (final JAXBException e) { + e.printStackTrace(); + } + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/DateUtilTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/DateUtilTestCase.java.svn-base new file mode 100644 index 000000000..5d2296997 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/DateUtilTestCase.java.svn-base @@ -0,0 +1,294 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import java.sql.Timestamp; +import java.util.Properties; + +import org.joda.time.DateTime; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.DateUtil; +import eu.stork.peps.auth.commons.PEPSUtil; +import eu.stork.peps.auth.commons.exceptions.SecurityPEPSException; + +/** + * The PersonalAttribute's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.2 $, $Date: 2010-11-17 05:17:03 $ + */ +public final class DateUtilTestCase { + + /** + * Stork Format date. + */ + private static final String FORMAT = "yyyyMMdd"; + + /** + * Expected 10 value. + */ + private static final int TEN = 10; + + /** + * Expected 11 value. + */ + private static final int ELEVEN = 11; + + /** + * The testing Date ("current" date). + */ + private static final DateTime TESTDATE = new DateTime(2011, 10, 10, 15, 20, + 0, 0); + + /** + * Init DateUtilTestCase class. + */ + @BeforeClass + public static void runsBeforeTheTestSuite() { + final Properties configs = new Properties(); + configs.setProperty("invalidAgeDateValue.code", "35"); + configs.setProperty("invalidAttributeValue.code", "34"); + configs + .setProperty( + "invalidAttributeValue.message", + "Unexpected or invalid content was encountered within a " + + " or element."); + PEPSUtil.createInstance(configs); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year against + * the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromYear() { + Assert.assertTrue(TEN == DateUtil.calculateAge("2000", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year and month + * against the testDate: 2011-10-10 15:20:00.0. Must return 11. + */ + @Test + public void calculateAgeFromEarlyMonth() { + Assert.assertTrue(ELEVEN == DateUtil.calculateAge("200001", TESTDATE, + FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year and month + * against the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromSameMonth() { + Assert.assertTrue(TEN == DateUtil.calculateAge("200010", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year and month + * against the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromLaterMonth() { + Assert.assertTrue(TEN == DateUtil.calculateAge("200011", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return 11. + */ + @Test + public void calculateAgeFromEarlyFullDate() { + Assert.assertTrue(ELEVEN == DateUtil.calculateAge("20000101", TESTDATE, + FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return 11. + */ + @Test + public void calculateAgeFromSameDay() { + Assert.assertTrue(ELEVEN == DateUtil.calculateAge("20001010", TESTDATE, + FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromLaterFullDate() { + Assert.assertTrue(TEN == DateUtil + .calculateAge("20001011", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromInvalidDate() { + DateUtil.calculateAge("200", TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromInvalidMonth() { + DateUtil.calculateAge("200013", TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromInvalidDay() { + DateUtil.calculateAge("20000230", TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromNullDate() { + DateUtil.calculateAge(null, TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromNullCurDate() { + DateUtil.calculateAge("2000", null, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromNullFormat() { + DateUtil.calculateAge("2000", TESTDATE, null); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return true + */ + @Test + public void isValidFormatDateFromYear() { + Assert.assertTrue(DateUtil.isValidFormatDate("2000", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year and + * month. Must return true. + */ + @Test + public void isValidFormatDateFromMonth() { + Assert.assertTrue(DateUtil.isValidFormatDate("200001", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDate() { + Assert.assertTrue(DateUtil.isValidFormatDate("20000101", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateInvalidYear() { + Assert.assertFalse(DateUtil.isValidFormatDate("200", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateInvalidMonth() { + Assert.assertFalse(DateUtil.isValidFormatDate("200013", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateInvalidDate() { + Assert.assertFalse(DateUtil.isValidFormatDate("20010229", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateNullDate() { + Assert.assertFalse(DateUtil.isValidFormatDate(null, FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateNullFormat() { + Assert.assertFalse(DateUtil.isValidFormatDate("2000", null)); + } + + /** + * Tests the {@link DateUtil#currentTimeStamp()} method for the current + * TimeStamp (TS). Must return true. + */ + @Test + public void testCurrentTimeStampBefore() { + Timestamp ts = DateUtil.currentTimeStamp(); + Assert.assertNotSame(ts, DateUtil.currentTimeStamp()); + } + + /** + * Tests the {@link DateUtil#currentTimeStamp()} method for the current + * TimeStamp (TS). Must return true. + */ + @Test + public void testCurrentTimeStampAfter() { + Timestamp ts = DateUtil.currentTimeStamp(); + Assert.assertEquals(DateUtil.currentTimeStamp(), ts); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PEPSUtilTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PEPSUtilTestCase.java.svn-base new file mode 100644 index 000000000..d4841ed43 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PEPSUtilTestCase.java.svn-base @@ -0,0 +1,553 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + +import java.util.Properties; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSErrors; +import eu.stork.peps.auth.commons.PEPSParameters; +import eu.stork.peps.auth.commons.PEPSUtil; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.exceptions.InternalErrorPEPSException; +import eu.stork.peps.auth.commons.exceptions.InvalidParameterPEPSException; + +/** + * The PEPSUtil's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com + * + * @version $Revision: $, $Date: $ + */ +public final class PEPSUtilTestCase { + + /** + * Message example. + */ + private static final String MESSAGE_SAMPLE = "003002 - Authentication Failed"; + + /** + * Error message example. + */ + private static final String ERROR_MESSAGE_SAMPLE = "Authentication Failed"; + + /** + * Error code example. + */ + private static final String ERROR_CODE_SAMPLE = "003002"; + + /** + * Properties values for testing proposes. + */ + private static final Properties CONFIGS1 = new Properties(); + + /** + * Properties values for testing proposes. + */ + private static final Properties CONFIGS2 = new Properties(); + + /** + * The empty string value: "". + */ + private static final String EMPTY_STRING = ""; + + /** + * The empty byte value: []. + */ + private static final byte[] EMPTY_BYTE = new byte[] {}; + + /** + * The empty byte hash value. + */ + private static final byte[] EMPTY_HASH_BYTE = new byte[] { -49, -125, -31, + 53, 126, -17, -72, -67, -15, 84, 40, 80, -42, 109, -128, 7, -42, 32, -28, + 5, 11, 87, 21, -36, -125, -12, -87, 33, -45, 108, -23, -50, 71, -48, -47, + 60, 93, -123, -14, -80, -1, -125, 24, -46, -121, 126, -20, 47, 99, -71, 49, + -67, 71, 65, 122, -127, -91, 56, 50, 122, -7, 39, -38, 62 }; + + /** + * The SAML example byte[] value. + */ + private static final byte[] SAML_BYTE_SAMPLE = new byte[] { 60, 115, 97, 109, + 108, 62, 46, 46, 46, 60, 47, 115, 97, 109, 108 }; + + /** + * The SAML's Base64 example value. + */ + private static final String SAML_BASE64_SAMPLE = "PHNhbWw+Li4uPC9zYW1s"; + + /** + * The SAML's Base64 byte[] example value. + */ + private static byte[] SAML_BASE64_BYTE_SAMPLE = new byte[] { 80, 72, 78, 104, + 98, 87, 119, 43, 76, 105, 52, 117, 80, 67, 57, 122, 89, 87, 49, 115 }; + + /** + * The SAML's Base64 Hash byte[] example value. + */ + private static byte[] HASH_BYTE_SAMPLE = new byte[] { 67, 38, 11, 115, 49, + -5, 54, -85, 38, 43, -99, 96, 71, -41, 50, -96, 71, -86, 90, -97, 66, -67, + 90, 101, 30, 82, -13, 60, -106, -72, -103, -75, 19, 2, -107, 107, -6, -56, + 34, -111, -44, -57, -26, -5, 33, 78, -1, 30, 21, 74, -26, 118, -46, -12, + -102, 12, -56, 30, -59, -104, -21, -42, -103, 82 }; + + /** + * Init PEPSUtilTestCase class. + */ + @BeforeClass + public static void runsBeforeTheTestSuite() { + + CONFIGS1.setProperty("max.attrList.size", "20000"); + CONFIGS1.setProperty("attrList.code", "202005"); + CONFIGS1.setProperty("attrList.message", "invalid.attrList.parameter"); + + CONFIGS1.setProperty("max.qaaLevel.size", "1"); + CONFIGS1.setProperty("max.spUrl.size", "inv"); + CONFIGS1.setProperty("validation.active", "true"); + CONFIGS1.setProperty("hashDigest.className", + "org.bouncycastle.crypto.digests.SHA512Digest"); + CONFIGS1.setProperty("invalidAgeDateValue.code", "35"); + CONFIGS1.setProperty("invalidAttributeValue.code", "34"); + CONFIGS1.setProperty("invalidAttributeValue.message", + "Unexpected or invalid content was encountered within a " + + " or element."); + } + + /** + * Tests the {@link PEPSUtil#createInstance(Properties)} method for the given + * properties object. + */ + @Test + public void testCreateInstance() { + Assert.assertNotNull(PEPSUtil.createInstance(CONFIGS2)); + } + + /** + * Tests the {@link PEPSUtil#getConfigs()}. + */ + @Test + public void testGetConfigs() { + final PEPSUtil pepsUtils = PEPSUtil.createInstance(CONFIGS1); + assertEquals(pepsUtils.getConfigs(), CONFIGS1); + } + + /** + * Tests the {@link PEPSUtil#getConfigs()}. + */ + @Test + public void testGetConfigsDifferent() { + final PEPSUtil pepsUtils = PEPSUtil.createInstance(CONFIGS1); + assertNotSame(pepsUtils.getConfigs(), CONFIGS2); + } + + /** + * Tests the {@link PEPSUtil#getConfig(String)} method for the given existing + * config. + */ + @Test + public void testGetConfigExists() { + assertEquals(PEPSUtil.getConfig("hashDigest.className"), + "org.bouncycastle.crypto.digests.SHA512Digest"); + } + + /** + * Tests the {@link PEPSUtil#getConfig(String)} method for the given not + * existing config. + */ + @Test + public void testGetConfigNoExists() { + assertNull(PEPSUtil.getConfig("doesnt.exists")); + } + + /** + * Tests the {@link PEPSUtil#getConfig(String)} method for the given null + * value. + */ + @Test(expected = NullPointerException.class) + public void testGetConfigNull() { + assertNull(PEPSUtil.getConfig(null)); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterExists() { + assertTrue(PEPSUtil.isValidParameter("qaaLevel", "1")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterExistsGreat() { + assertFalse(PEPSUtil.isValidParameter("qaaLevel", "12")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterExistsIvalidConf() { + assertFalse(PEPSUtil + .isValidParameter("spUrl", "http://localhost:8080/SP/")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterNotExists() { + assertFalse(PEPSUtil.isValidParameter("doesntexists", + "http://localhost:8080/SP/")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterNullParamName() { + assertFalse(PEPSUtil.isValidParameter(null, "http://localhost:8080/SP/")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterNullParamValue() { + assertFalse(PEPSUtil.isValidParameter("spUrl", null)); + } + + /** + * Tests the {@link PEPSUtil#validateParameter(String, String, Object)} method + * for the given object values. + */ + @Test + public void testValidateParameterValid() { + final IPersonalAttributeList persAttrList = new PersonalAttributeList(); + persAttrList.populate("isAgeOver:true:[15,]:Available;"); + PEPSUtil.validateParameter("ServiceProviderAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), persAttrList); + } + + /** + * Tests the {@link PEPSUtil#validateParameter(String, String, Object)} method + * for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterNull() { + PEPSUtil.validateParameter("ServiceProviderAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), null); + } + + /** + * Tests the {@link PEPSUtil#validateParameter(String, String, String)} method + * for the given string values. + * + * The tested class just invokes + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * so further tests will be later. + */ + @Test + public void testValidateParameter() { + PEPSUtil.validateParameter("ServiceProviderAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), + "isAgeOver:true:[15,]:Available;"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, PEPSErrors)} + * method for the given string value and {@link PEPSErrors} enum. + * + * The tested class just invokes + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * so further tests will be later. + */ + @Test + public void testValidateParameterPEPSErrors() { + PEPSUtil.validateParameter("CountrySelectorAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), + "isAgeOver:true:[15,]:Available;", + PEPSErrors.SP_COUNTRY_SELECTOR_INVALID_ATTR); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test + public void testValidateParameterValidParams() { + PEPSUtil.validateParameter("ServiceProviderAction", "qaaLevel", "1", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterInvalidParamValue() { + PEPSUtil.validateParameter("ServiceProviderAction", "qaaLevel", "10", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterInvalidParamName() { + PEPSUtil.validateParameter("ServiceProviderAction", "doesnt.exists", "1", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterNullParamName() { + PEPSUtil.validateParameter("ServiceProviderAction", null, "1", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterNullParamValue() { + PEPSUtil.validateParameter("ServiceProviderAction", "qaaLevel", null, + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the {@link PEPSUtil#encodeSAMLToken(byte[])} method for the given + * string value. + */ + @Test + public void testEncodeSAMLToken() { + assertEquals(PEPSUtil.encodeSAMLToken(SAML_BYTE_SAMPLE), SAML_BASE64_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#encodeSAMLToken(byte[])} method for the given + * null. + */ + @Test(expected = NullPointerException.class) + public void testEncodeSAMLTokenNull() { + assertNotSame(PEPSUtil.encodeSAMLToken(null), SAML_BASE64_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#encodeSAMLToken(byte[])} method for the given + * empty byte[] value. + */ + @Test + public void testEncodeSAMLTokenEmpty() { + assertEquals(PEPSUtil.encodeSAMLToken(EMPTY_BYTE), EMPTY_STRING); + } + + /** + * Tests the {@link PEPSUtil#decodeSAMLToken(byte[])} method for the given + * byte[] value. + */ + @Test + public void testDecodeSAMLToken() { + assertArrayEquals(PEPSUtil.decodeSAMLToken(SAML_BASE64_SAMPLE), + SAML_BYTE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#decodeSAMLToken(byte[])} method for the given + * null value. + */ + @Test(expected = NullPointerException.class) + public void testDecodeSAMLTokenNull() { + assertNotSame(PEPSUtil.decodeSAMLToken(null), SAML_BYTE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#decodeSAMLToken(byte[])} method for the given + * empty string value. + */ + @Test(expected = StringIndexOutOfBoundsException.class) + public void testDecodeSAMLTokenEmpty() { + assertTrue(PEPSUtil.decodeSAMLToken(EMPTY_STRING) == EMPTY_BYTE); + } + + /** + * Tests the {@link PEPSUtil#hashPersonalToken(byte[])} method for the given + * byte[] value. + */ + @Test + public void testHashPersonalToken() { + assertArrayEquals(PEPSUtil.hashPersonalToken(SAML_BASE64_BYTE_SAMPLE), + HASH_BYTE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#hashPersonalToken(byte[])} method for the given + * null value. + */ + @Test(expected = InternalErrorPEPSException.class) + public void testHashPersonalTokenNull() { + assertNull(PEPSUtil.hashPersonalToken(null)); + } + + /** + * Tests the {@link PEPSUtil#hashPersonalToken(byte[])} method for the given + * empty value. + */ + @Test + public void testHashPersonalTokenEmpty() { + assertArrayEquals(PEPSUtil.hashPersonalToken(EMPTY_BYTE), EMPTY_HASH_BYTE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * correct message. + */ + @Test + public void testGetStorkErrorCodeExists() { + assertEquals(PEPSUtil.getStorkErrorCode(MESSAGE_SAMPLE), ERROR_CODE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * invalid message. + */ + @Test + public void testGetStorkErrorCodeNoExists() { + assertNull(PEPSUtil.getStorkErrorCode(ERROR_MESSAGE_SAMPLE)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * empty message. + */ + @Test + public void testGetStorkErrorCodeEmpty() { + assertNull(PEPSUtil.getStorkErrorCode(EMPTY_STRING)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * null message. + */ + @Test + public void testGetStorkErrorCodeNull() { + assertNull(PEPSUtil.getStorkErrorCode(null)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * invalid message. + */ + @Test + public void testGetStorkErrorCodeWithSepFake() { + assertNull(PEPSUtil.getStorkErrorCode("-")); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * invalid message. + */ + @Test + public void testGetStorkErrorCodeWithSepAndCodeFake() { + assertNull(PEPSUtil.getStorkErrorCode("000001 -")); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given correct message. + */ + @Test + public void testGetStorkErrorMessageExists() { + assertEquals(PEPSUtil.getStorkErrorMessage(MESSAGE_SAMPLE), + ERROR_MESSAGE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given invalid message. + */ + @Test + public void testGetStorkErrorMessageNoExists() { + assertEquals(PEPSUtil.getStorkErrorMessage(ERROR_MESSAGE_SAMPLE), + ERROR_MESSAGE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given empty message. + */ + @Test + public void testGetStorkErrorMessageEmpty() { + assertEquals(PEPSUtil.getStorkErrorMessage(EMPTY_STRING), + EMPTY_STRING); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given null message. + */ + @Test + public void testGetStorkErrorMessageNull() { + assertNull(PEPSUtil.getStorkErrorMessage(null)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given invalid message. + */ + @Test + public void testGetStorkErrorMessageWithSepFake() { + assertEquals(PEPSUtil.getStorkErrorMessage("-"),"-"); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given invalid message. + */ + @Test + public void testGetStorkErrorMessageWithSepAndCodeFake() { + assertEquals(PEPSUtil.getStorkErrorMessage("000001 -"),"000001 -"); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeListTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeListTestCase.java.svn-base new file mode 100644 index 000000000..7052b320a --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeListTestCase.java.svn-base @@ -0,0 +1,747 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKStatusCode; + +/** + * The PersonalAttributeList's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.5 $, $Date: 2010-11-17 05:17:02 $ + */ +public final class PersonalAttributeListTestCase { + + /** + * isAgeOver constant value. + */ + private static final String ISAGEOVER_CONS = "isAgeOver"; + + /** + * 1 constant value. + */ + private static final int ONE_CONS = 1; + + /** + * 2 constant value. + */ + private static final int TWO_CONS = 2; + + /** + * An empty attribute. + */ + @SuppressWarnings("unused") + private static final PersonalAttributeList EMPTY_ATTR_LIST = + new PersonalAttributeList(0); + + /** + * An attribute with a complex value (canonicalResidenceAddress). + */ + private static PersonalAttribute complexAttrValue = null; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST = + "isAgeOver:true:[15,]:Available;"; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST2 = + "isAgeOver:true:[18,]:Available;"; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST3 = + "isAgeOver:true:[15,]:Available;isAgeOver:true:[18,]:Available;"; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST3_REVERSE = + "isAgeOver:true:[18,]:Available;isAgeOver:true:[15,]:Available;"; + /** + * Simple attribute value list string. + */ + private static final String COMPLEX_ATTRLIST = + "canonicalResidenceAddress:true:[postalCode=4100,apartmentNumber=Ed. B," + + "state=Porto,countryCodeAddress=PT,streetNumber=379," + + "streetName=Avenida Sidonio Pais,town=Porto,]:Available;"; + /** + * Mix attribute list string. + */ + private static final String STR_MIX_ATTR_LIST = + "isAgeOver:true:[15,]:Available;canonicalResidenceAddress:true:[" + + "postalCode=4100,apartmentNumber=Ed.B,state=Porto,countryCodeAddress=PT," + + "streetNumber=379,streetName=Avenida Sidonio Pais,town=Porto,]:" + + "Available;"; + + /** + * Mix attribute list 2 string. + */ + private static final String STR_MIX_ATTR_LIST2 = + "isAgeOver:true:[15,]:Available;canonicalResidenceAddress:true:[" + + "postalCode=4100,apartmentNumber=Ed.B,state=Porto,countryCodeAddress=PT," + + "streetNumber=379,streetName=Avenida Sidonio Pais,town=Porto,]:Available;" + + "mandateContent:true:[" + + "isJoint=\"isjoint\",typeOfPower=\"power\",ValidTo=\"validto\",validfrom=\"validfrom\",AQAA=\"3\",isChained=\"ischained\",]:" + + "Available;"; + + /** + * Attribute List example. + */ + @SuppressWarnings({ "serial" }) + private static final PersonalAttribute ATTR_VALUE = new PersonalAttribute( + "age", true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + /** + * Init PersonalAttributeListTestCase class. + */ + @SuppressWarnings("serial") + @BeforeClass + public static void runsBeforeTheTestSuite() { + final Map values = new HashMap() { + { + put("countryCodeAddress", "PT"); + put("state", "Porto"); + put("town", "Porto"); + put("postalCode", "4100"); + put("streetName", "Avenida Sidonio Pais"); + put("streetNumber", "379"); + put("apartmentNumber", "Ed. B"); + } + }; + + complexAttrValue = + new PersonalAttribute("canonicalResidenceAddress", true, values, + STORKStatusCode.STATUS_AVAILABLE.toString()); + + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 1 - Simple attribute. + */ + @Test + public void testAddSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(ATTR_VALUE); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 1 - Complex attribute. + */ + @Test + public void testAddCompleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(complexAttrValue); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 0 - no attribute. + */ + @Test + public void testAddNull() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(null); + Assert.assertTrue(attrList.size() == 0); + } + + /** + * Testing Personal Attribute List add method. Same attribute name added + * twice. Personal Attribute list must be size 2 - IsAgeOver attribute added + * twice. + */ + @SuppressWarnings("serial") + @Test + public void testAddSameAttrName() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List add method. Same attribute name added + * twice. Personal Attribute list must be size 2 - IsAgeOver attribute added + * twice. + */ + @SuppressWarnings("serial") + @Test + public void testAddSameAttrNameEmpty() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add(""); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 1 - Simple Value. + */ + @Test + public void testPutSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(ATTR_VALUE.getName(), ATTR_VALUE); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 1 - Complex Value. + */ + @Test + public void testPutComplexAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(ATTR_VALUE.getName(), complexAttrValue); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 0 - no attribute. + */ + @Test + public void testPutNull() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put("", null); + Assert.assertTrue(attrList.size() == 0); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 2 - IsAgeOver attribute added twice. + */ + @SuppressWarnings("serial") + @Test + public void testPutSameAttrName() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 2 - IsAgeOver attribute added twice. + */ + @SuppressWarnings("serial") + @Test + public void testPutSameAttrNameEmpty() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add(""); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List get method. Personal Attribute list must be + * size 1 - Simple attribute. + */ + @Test + public void testGetSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(ATTR_VALUE); + Assert.assertEquals(ATTR_VALUE, attrList.get(ATTR_VALUE.getName())); + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 1 - Complex attribute. + */ + @Test + public void testGetCompleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(complexAttrValue); + Assert.assertEquals(complexAttrValue.toString(), + attrList.get(complexAttrValue.getName()).toString()); + } + + /** + * Testing Personal Attribute List get method. Personal Attribute list must be + * size 2 - IsAgeOver attribute. + */ + @SuppressWarnings("serial") + @Test + public void testGetIsAgeOverAttr() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertEquals(SIMPLE_ATTRLIST, + attrList.get(attrValueUnder.getName()).toString()); + Assert.assertEquals(SIMPLE_ATTRLIST2, + attrList.get(attrValueOver.getName()).toString()); + } + + /** + * Testing Personal Attribute List populate method. Personal Attribute list + * must be size 1 - Simple attribute. + */ + @Test + public void testPopulateSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(SIMPLE_ATTRLIST); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List populate method. Personal Attribute list + * must be size 1 - Complex attribute. + */ + @Test + public void testPopulateComplexAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(COMPLEX_ATTRLIST); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List populate method. Personal Attribute list + * must be size 1 - Simple and Complex attribute. + */ + @Test + public void testPopulateMixAttrs() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(STR_MIX_ATTR_LIST); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List toString method using add. + */ + @SuppressWarnings("serial") + @Test + public void testToStringFromAdd() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertEquals(SIMPLE_ATTRLIST3_REVERSE, attrList.toString()); + } + + /** + * Testing Personal Attribute List toString method using put. + * + */ + @SuppressWarnings("serial") + @Test + public void testToStringFromPut() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertEquals(SIMPLE_ATTRLIST3_REVERSE, attrList.toString()); + } + + /** + * Testing Personal Attribute List toString method using populate. + */ + @Test + public void testToStringFromSimplePopulate() { + final String strAttrList = "isAgeOver:true"; + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(strAttrList); + Assert.assertEquals("isAgeOver:true:[]:;", attrList.toString()); + } + + /** + * Testing Personal Attribute List toString method using populate. + */ + @Test + public void testToStringFromPopulate() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(SIMPLE_ATTRLIST3); + Assert.assertEquals(SIMPLE_ATTRLIST3_REVERSE, attrList.toString()); + } + + /** + * Testing Personal Attribute List populate method, with invalid values. + */ + @Test + public void testPopulateWithInvalidValuesFormat() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate("name:type:values:status;"); + Assert.assertEquals(pal, new PersonalAttributeList()); + } + + /** + * Testing Personal Attribute List populate method, with invalid format. + */ + @Test + public void testPopulateWithInvalidFormat() { + + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate("name:type::status;"); + Assert.assertEquals(pal, new PersonalAttributeList()); + } + + /** + * Testing Personal Attribute List clone method using add. + */ + @SuppressWarnings("serial") + @Test + public void testCloneFromAdd() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertNotSame(attrList, attrList.clone()); + } + + /** + * Testing Personal Attribute List clone method using put. + */ + @SuppressWarnings("serial") + @Test + public void testCloneFromPut() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertNotSame(attrList, attrList.clone()); + } + + /** + * Testing Personal Attribute List clone method using populate. + */ + @Test + public void testCloneFromPopulate() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(SIMPLE_ATTRLIST3); + Assert.assertNotSame(pal, pal.clone()); + } + + /** + * Testing Personal Attribute List iterator. + */ + @Test + public void testIterator() { + final String strAttrList = + "isAgeOver:true:[15,]:Available;isAgeOver:true:[18,]:Available;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + final Iterator itAttr = pal.iterator(); + while (itAttr.hasNext()) { + final PersonalAttribute attr = itAttr.next(); + Assert.assertEquals(ISAGEOVER_CONS, attr.getName()); + } + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method with empty attribute list. + */ + @Test + public void testGetOptionalAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getOptionalAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method without optional attributes. + */ + @Test + public void testGetOptionalAttributesWithoutOptional() { + final String strAttrList = + "isAgeOver:true:[15,]:Available;isAgeOver:true:[18,]:Available;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getOptionalAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method with one optional attribute. + */ + @Test + public void testGetOptionalAttributesWithOneOptional() { + final String strAttrList = + "age:false:[]:;isAgeOver:true:[15,]:;isAgeOver:true:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getOptionalAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method with two optional attribute. + */ + @Test + public void testGetOptionalAttributesWithOnlyOptional() { + final String strAttrList = + "age:false:[]:;isAgeOver:false:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getOptionalAttributes().size() == TWO_CONS); + } + + /** + * Testing Personal Attribute List's getMandatoryAttributes method with empty attribute list. + */ + @Test + public void testGetMandatoryAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getMandatoryAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getMandatoryAttributes method without mandatory attributes. + */ + @Test + public void testGetMandatoryAttributesWithoutMandatory() { + final String strAttrList = + "isAgeOver:false:[15,]:Available;isAgeOver:false:[18,]:Available;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getMandatoryAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with one mandatory attribute. + */ + @Test + public void testGetMandatoryAttributesWithOneMandatory() { + final String strAttrList = + "age:true:[]:;isAgeOver:false:[15,]:;isAgeOver:false:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getMandatoryAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with two mandatory attribute. + */ + @Test + public void testGetMandatoryAttributesWithOnlyMandatory() { + final String strAttrList = + "age:true:[]:;isAgeOver:true:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getMandatoryAttributes().size() == TWO_CONS); + } + + /** + * Testing Personal Attribute List's getSimpleValueAttributes method with empty attribute list. + */ + @Test + public void testGetSimpleValueAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getSimpleValueAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getSimpleValueAttributes() method without simple attributes. + */ + @Test + public void testGetSimpleValueAttributesWithoutSimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(COMPLEX_ATTRLIST); + Assert.assertTrue(pal.getSimpleValueAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getSimpleValueAttributes() method with one simple attribute. + */ + @Test + public void testGetSimpleValueAttributesWithOneSimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(STR_MIX_ATTR_LIST); + Assert.assertTrue(pal.getSimpleValueAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with two simple attribute. + */ + @Test + public void testGetSimpleValueAttributesWithOnlySimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(SIMPLE_ATTRLIST3); + Assert.assertTrue(pal.getSimpleValueAttributes().size() == TWO_CONS); + } + + /** + * Testing Personal Attribute List's getComplexValueAttributes method with empty attribute list. + */ + @Test + public void testGetComplexAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getComplexAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getComplexAttributes() method without complex attributes. + */ + @Test + public void testGetComplexAttributesWithoutSimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(SIMPLE_ATTRLIST2); + Assert.assertTrue(pal.getComplexAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getComplexAttributes() method with one complex attribute. + */ + @Test + public void testGetComplexAttributesWithOneComplex() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(STR_MIX_ATTR_LIST); + Assert.assertTrue(pal.getComplexAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with only two Complex attribute. + */ + @Test + public void testGetComplexAttributesWithOnlyComplex() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(STR_MIX_ATTR_LIST2); + Assert.assertTrue(pal.getComplexAttributes().size() == TWO_CONS); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeTestCase.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeTestCase.java.svn-base new file mode 100644 index 000000000..458d510e0 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/PersonalAttributeTestCase.java.svn-base @@ -0,0 +1,182 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import junit.framework.Assert; + +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.STORKStatusCode; + +/** + * The PersonalAttribute's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.4 $, $Date: 2010-11-17 05:17:03 $ + */ +public final class PersonalAttributeTestCase { + + /** + * An empty attribute. + */ + private static final PersonalAttribute EMPTYATTR = new PersonalAttribute(); + + /** + * An attribute with a complex value (canonicalResidenceAddress). + */ + private static PersonalAttribute complexAttrValue = null; + + /** + * An attribute with a simple value (age). + */ + @SuppressWarnings("serial") + private static final PersonalAttribute ATTR_VALUE = new PersonalAttribute( + "age", true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + /** + * Init PersonalAttributeTestCase class. + */ + @SuppressWarnings("serial") + @BeforeClass + public static void runsBeforeTheTestSuite() { + final Map values = new HashMap() { + { + put("countryCodeAddress", "PT"); + put("state", "Porto"); + put("town", "Porto"); + put("postalCode", "4100"); + put("streetName", "Avenida Sidonio Pais"); + put("streetNumber", "379"); + put("apartmentNumber", "B"); + } + }; + + complexAttrValue = + new PersonalAttribute("canonicalResidenceAddress", true, values, + STORKStatusCode.STATUS_AVAILABLE.toString()); + + } + + /** + * Tests the {@link PersonalAttribute#toString()} method for the given simple + * attribute value. Values must match. + */ + @Test + public void testToStringValues() { + Assert.assertEquals("age:true:[15,]:Available;", ATTR_VALUE.toString()); + } + + /** + * Tests the {@link PersonalAttribute#toString()} method for the given complex + * attribute value. Values must match. + */ + @Test + public void testToStringComplexValues() { + Assert.assertEquals( + "canonicalResidenceAddress:true:[postalCode=4100,apartmentNumber=B," + + "state=Porto,countryCodeAddress=PT,streetNumber=379," + + "streetName=Avenida Sidonio Pais,town=Porto,]:Available;", + complexAttrValue.toString()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyStatus()} method for the given + * empty attribute. Must return true. + */ + @Test + public void testToIsEmptyStatusWithNull() { + Assert.assertTrue(EMPTYATTR.isEmptyStatus()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyStatus()} method for the given + * new attribute. Must return true. + */ + @Test + public void testToIsEmptyStatusWithEmptyString() { + final PersonalAttribute attr = (PersonalAttribute) EMPTYATTR.clone(); + attr.setStatus(""); + Assert.assertTrue(attr.isEmptyStatus()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyValue()} method for the given + * empty attribute. Must return true. + */ + @Test + public void testToIsEmptyValueWithNull() { + final PersonalAttribute attr = (PersonalAttribute) EMPTYATTR.clone(); + attr.setValue(null); + Assert.assertTrue(attr.isEmptyValue()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyValue()} method for the given + * empty attribute. Must return true. + */ + @Test + public void testToIsEmptyValue() { + Assert.assertTrue(EMPTYATTR.isEmptyValue()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyComplexValue()} method for the + * given empty attribute. Must return true. + */ + @Test + public void testToIsEmptyComplexValueWithNull() { + final PersonalAttribute attr = (PersonalAttribute) EMPTYATTR.clone(); + attr.setComplexValue(null); + Assert.assertTrue(attr.isEmptyComplexValue()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyComplexValue()} method for the + * given empty attribute. Must return true. + */ + @Test + public void testToIsEmptyComplexValueWithEmptyComplexValue() { + Assert.assertTrue(EMPTYATTR.isEmptyComplexValue()); + } + + /** + * Tests the {@link PersonalAttribute#clone()} method for the given attribute. + * Must return true. + */ + @Test + public void testCloneToComplexValue() { + Assert.assertNotSame(complexAttrValue, complexAttrValue.clone()); + } + + /** + * Tests the {@link PersonalAttribute#clone()} method for the given attribute. + * Must return true. + */ + @Test + public void testCloneToValue() { + Assert.assertNotSame(ATTR_VALUE, ATTR_VALUE.clone()); + } +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/package-info.java.svn-base b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/package-info.java.svn-base new file mode 100644 index 000000000..452602210 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/.svn/text-base/package-info.java.svn-base @@ -0,0 +1,5 @@ +/** + * This package provides all JUnit test classes. + */ +package eu.stork.peps.tests; + diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeProvidersMapTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeProvidersMapTestCase.java new file mode 100644 index 000000000..89f5adbed --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeProvidersMapTestCase.java @@ -0,0 +1,134 @@ +package eu.stork.peps.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import eu.stork.peps.auth.commons.AttributeProvider; +import eu.stork.peps.auth.commons.AttributeProvidersMap; +import eu.stork.peps.auth.commons.AttributeSource; +import eu.stork.peps.auth.commons.Country; +import eu.stork.peps.auth.commons.IAttributeProvidersMap; +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttributeList; + +/** + * The AttributeSource's Test Case. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: $, $Date: $ + */ +public class AttributeProvidersMapTestCase { + + @Test + public void testObjectOK1() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(source) ) { + outcome = true; + } + + assertTrue(outcome); + } + + @Test + public void testObjectOK2() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(source) ) { + if ( map.get(source)!=null ) { + outcome = true; + } + } + + assertTrue(outcome); + } + + @Test + public void testObjectOK3() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + outcome = true; + } + + assertTrue(outcome); + } + + @Test + public void testObjectOK4() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + if ( map.get(target)!=null ) { + outcome = true; + } + } + + assertTrue(outcome); + } + + @Test + public void testObjectNOK1() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new Country("ID1", "Name 1"), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + outcome = true; + } + + assertFalse(outcome); + } + + @Test + public void testObjectNOK2() { + final IAttributeProvidersMap map = new AttributeProvidersMap(); + final AttributeSource source = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL"); + final AttributeSource target = new AttributeSource(new AttributeProvider("ID2", "Name 1", null), "URL"); + final IPersonalAttributeList pal = new PersonalAttributeList(); + boolean outcome = false; + + //Add a single item + map.put(source, pal); + + if ( map.containsKey(target) ) { + outcome = true; + } + + assertFalse(outcome); + } +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeSourceTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeSourceTestCase.java new file mode 100644 index 000000000..e0f685ade --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeSourceTestCase.java @@ -0,0 +1,88 @@ +package eu.stork.peps.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import eu.stork.peps.auth.commons.AttributeProvider; +import eu.stork.peps.auth.commons.AttributeSource; +import eu.stork.peps.auth.commons.Country; + +/** + * The AttributeSource's Test Case. + * + * @author Stelios Lelis (stelios.lelis@aegean.gr), Elias Pastos (ilias@aegean.gr) + * + * @version $Revision: $, $Date: $ + */ +public final class AttributeSourceTestCase { + private final AttributeSource ap1 = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL1"); + private final AttributeSource ap2 = new AttributeSource(new AttributeProvider("ID2", "Name 2", null), "URL2"); + private final AttributeSource ap3 = new AttributeSource(new AttributeProvider("ID1", "Name 2", null), "URL2"); + private final AttributeSource ap4 = new AttributeSource(new AttributeProvider("ID1", "Name 2", null), "URL1"); + private final AttributeSource ap5 = new AttributeSource(new AttributeProvider("ID1", "Name 1", null), "URL1"); + + private final AttributeSource c1 = new AttributeSource(new Country("ID1", "Name 1"), "URL1"); + private final AttributeSource c2 = new AttributeSource(new Country("ID2", "Name 2"), "URL2"); + private final AttributeSource c3 = new AttributeSource(new Country("ID1", "Name 2"), "URL2"); + private final AttributeSource c4 = new AttributeSource(new Country("ID1", "Name 2"), "URL1"); + private final AttributeSource c5 = new AttributeSource(new Country("ID1", "Name 1"), "URL1"); + + @Test + public void testNotEquals1() { + assertFalse(ap1.equals(ap2)); + } + + @Test + public void testNotEquals2() { + assertFalse(ap1.equals(c1)); + } + + @Test + public void testNotEquals3() { + assertFalse(c1.equals(c2)); + } + + @Test + public void testEquals1() { + assertTrue(ap1.equals(ap3)); + } + + @Test + public void testEquals2() { + assertTrue(ap1.equals(ap4)); + } + + @Test + public void testEquals3() { + assertTrue(ap1.equals(ap5)); + } + + @Test + public void testEquals4() { + assertTrue(c1.equals(c3)); + } + + @Test + public void testEquals5() { + assertTrue(c1.equals(c4)); + } + + @Test + public void testEquals6() { + assertTrue(c1.equals(c5)); + } + + @Test + public void testEquals7() { + final Object obj = ap5; + assertTrue(ap1.equals(obj)); + } + + @Test + public void testEquals8() { + final Object obj = c5; + assertTrue(c1.equals(obj)); + } +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeUtilTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeUtilTestCase.java new file mode 100644 index 000000000..77fc4b9c2 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/AttributeUtilTestCase.java @@ -0,0 +1,537 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Test; + +import eu.stork.peps.auth.commons.AttributeUtil; +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSValues; +import eu.stork.peps.auth.commons.PersonalAttributeList; + +/** + * The AttributeUtil's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com + * + * @version $Revision: $, $Date: $ + */ +public final class AttributeUtilTestCase { + + /** + * Empty String to be used on the tests. + */ + private static final String EMPTY_STRING = ""; + + /** + * Tuple value sample to be used on the tests. + */ + private static final String[] TUPLE_STRING = new String[] { "age", "true", + "[18]", "Available" }; + + /** + * Complex value to be used on escape/unescape tests. + */ + private static final String COMPLEX_VAL = "postalCode=4100," + + "apartmentNumber=A,state=Porto,countryCodeAddress=PT,streetNumber=379," + + "streetName=Avenida Sidonio Pais,town=Porto,"; + + /** + * Escaped Complex value to be used on escape/unescape tests. + */ + private static final String ESC_COMPLEX_VAL = "postalCode=4100%44" + + "apartmentNumber=A%44state=Porto%44countryCodeAddress=PT%44" + + "streetNumber=379%44streetName=Avenida Sidonio Pais%44town=Porto%44"; + + /** + * Simple value to be used on escape/unescape tests. + */ + private static final String SIMPLE_VAL = "Avenida da Boavista, Porto"; + + /** + * Escaped simple value to be used on escape/unescape tests. + */ + private static final String ESC_SIMPLE_VAL = "Avenida da Boavista%44 Porto"; + + /** + * Simple text to be used on escape/unescape tests. Must match the escaped + * text. + */ + private static final String SIMPLE_TEXT = "John Doe"; + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given complex + * attribute value (canonical address' example attribute value). + */ + @Test + public void testEscapeSpecialCharsComplexVal() { + assertEquals(AttributeUtil.escape(COMPLEX_VAL), ESC_COMPLEX_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given + * attribute value. + */ + @Test + public void testEscapeSpecialCharsVal() { + assertEquals(AttributeUtil.escape(SIMPLE_VAL), ESC_SIMPLE_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given simple + * text: no special characters to escape. + */ + @Test + public void testEscapeNormalChars() { + assertEquals(AttributeUtil.escape(SIMPLE_TEXT), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#unescape(String)} method for the given + * escape complex attribute value (canonical address' example attribute + * value). + */ + @Test + public void testUnescapeSpecialCharsComplexVal() { + assertEquals(AttributeUtil.unescape(ESC_COMPLEX_VAL), COMPLEX_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given escape + * attribute value. + */ + @Test + public void testUnescapeSpecialCharsVal() { + assertEquals(AttributeUtil.unescape(ESC_SIMPLE_VAL), SIMPLE_VAL); + } + + /** + * Tests the {@link AttributeUtil#escape(String)} method for the given simple + * text: no special characters to unescape. + */ + @Test + public void testUnescapeNormalChars() { + assertEquals(AttributeUtil.unescape(SIMPLE_TEXT), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#appendIfNotNull(StringBuilder, Object)} + * method for the given empty string. + */ + @Test + public void testAppendIfNotNullEmptyStr() { + final StringBuilder strBuilder = new StringBuilder(SIMPLE_TEXT); + AttributeUtil.appendIfNotNull(strBuilder, EMPTY_STRING); + assertEquals(strBuilder.toString(), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#appendIfNotNull(StringBuilder, Object)} + * method for the given string. + */ + @Test + public void testAppendIfNotNullStr() { + final StringBuilder strBuilder = new StringBuilder(); + AttributeUtil.appendIfNotNull(strBuilder, SIMPLE_TEXT); + assertEquals(strBuilder.toString(), SIMPLE_TEXT); + } + + /** + * Tests the {@link AttributeUtil#appendIfNotNull(StringBuilder, Object)} + * method for the given null value. + */ + @Test + public void testAppendIfNotNull() { + final StringBuilder strBuilder = new StringBuilder(); + AttributeUtil.appendIfNotNull(strBuilder, null); + assertEquals(strBuilder.toString(), EMPTY_STRING); + } + + /** + * Tests the {@link AttributeUtil#listToString(List, String)} method for the + * given List with two values. + */ + @Test + public void testListToStringTwoVals() { + final List vals = new ArrayList(); + vals.add(SIMPLE_VAL); + vals.add(SIMPLE_TEXT); + + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append(SIMPLE_TEXT); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + assertEquals( + AttributeUtil.listToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#listToString(List, String)} method for the + * given List with one values. + */ + @Test + public void testListToStringOneVal() { + final List vals = new ArrayList(); + vals.add(SIMPLE_VAL); + + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + assertEquals( + AttributeUtil.listToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#listToString(List, String)} method for the + * given List with one value. + */ + @Test + public void testListToStringEmptyVal() { + final List vals = new ArrayList(); + + final StringBuilder strBuilder = new StringBuilder(); + + assertEquals( + AttributeUtil.listToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#mapToString(java.util.Map, String)} method + * for the given Map with one value. + */ + @Test + public void testMapToStringOneVal() { + final Map vals = new HashMap(); + vals.put("CanonicalAddress", COMPLEX_VAL); + + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("CanonicalAddress="); + strBuilder.append(ESC_COMPLEX_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + + assertEquals(AttributeUtil.mapToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#mapToString(java.util.Map, String)} method + * for the given empty Map. + */ + @Test + public void testMapToStringEmptyVal() { + final Map vals = new HashMap(); + + final StringBuilder strBuilder = new StringBuilder(); + + assertEquals(AttributeUtil.mapToString(vals, + PEPSValues.ATTRIBUTE_VALUE_SEP.toString()), strBuilder.toString()); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * invalid List. + */ + @Test + public void testIsValidValueInvalidList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append("]"); + assertFalse(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * null value. + */ + @Test + public void testIsValidValueNullList() { + assertFalse(AttributeUtil.isValidValue(null)); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * empty List. + */ + @Test + public void testIsValidValueEmptyList() { + assertTrue(AttributeUtil.isValidValue("[]")); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * empty List. + */ + @Test + public void testIsValidValueEmptyCommaList() { + assertTrue(AttributeUtil.isValidValue("[,]")); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one simple value List. + */ + @Test + public void testIsValidValueOneValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one simple value List. + */ + @Test + public void testIsValidValueOneValueCommaList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one complex value List. + */ + @Test + public void testIsValidValueOneComplexValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_COMPLEX_VAL); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * one complex value List. + */ + @Test + public void testIsValidValueOneComplexValueCommaList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_COMPLEX_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * multi value List. + */ + @Test + public void testIsValidValueMultiValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append("["); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append(SIMPLE_TEXT); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertTrue(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidValue(String)} method for the given + * invalid multi value List. + */ + @Test + public void testIsValidValueInvalidMultiValueList() { + final StringBuilder strBuilder = new StringBuilder(); + strBuilder.append(ESC_SIMPLE_VAL); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append(SIMPLE_TEXT); + strBuilder.append(PEPSValues.ATTRIBUTE_VALUE_SEP.toString()); + strBuilder.append("]"); + assertFalse(AttributeUtil.isValidValue(strBuilder.toString())); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * true type. + */ + @Test + public void testIsValidTypetrue() { + assertTrue(AttributeUtil.isValidType("true")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * True type. + */ + @Test + public void testIsValidTypeTrue() { + assertTrue(AttributeUtil.isValidType("True")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * TRUE type. + */ + @Test + public void testIsValidTypeTRUE() { + assertTrue(AttributeUtil.isValidType("TRUE")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * invalid type. + */ + @Test + public void testIsValidTypeInvalidType() { + assertFalse(AttributeUtil.isValidType("str")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * false type. + */ + @Test + public void testIsValidTypefalse() { + assertTrue(AttributeUtil.isValidType("false")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * False type. + */ + @Test + public void testIsValidTypeFalse() { + assertTrue(AttributeUtil.isValidType("False")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * FALSE type. + */ + @Test + public void testIsValidTypeFALSEVal() { + assertTrue(AttributeUtil.isValidType("False")); + } + + /** + * Tests the {@link AttributeUtil#isValidType(String)} method for the given + * null. + */ + @Test + public void testIsValidTypeNullVal() { + assertFalse(AttributeUtil.isValidType(null)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given valid tuple. + */ + @Test + public void testHasValidTuples() { + assertTrue(AttributeUtil.hasValidTuples(TUPLE_STRING)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given invalid tuple. + */ + @Test + public void testHasValidTuplesInvalid() { + final String[] tuple = new String[]{"name", "type"}; + assertFalse(AttributeUtil.hasValidTuples(tuple)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given invalid tuple with valid size. + */ + @Test + public void testHasValidTuplesSameSizeInvalidValues() { + final String[] tuple = new String[] { "age", "type", "[18]", "Available"}; + assertFalse(AttributeUtil.hasValidTuples(tuple)); + } + + /** + * Tests the {@link AttributeUtil#hasValidTuples(String[])} method for the + * given null value. + */ + @Test + public void testHasValidTuplesNull() { + assertFalse(AttributeUtil.hasValidTuples(null)); + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given attribute list.. + */ + @Test + public void testCheckMandatoryAttributes() { + final IPersonalAttributeList attrList = new PersonalAttributeList(); + attrList.populate("isAgeOver:true:[18,]:Available;"); + assertTrue(AttributeUtil.checkMandatoryAttributes(attrList)); + + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given null value. + */ + @Test(expected = NullPointerException.class) + public void testCheckMandatoryAttributesNullAttrList() { + assertTrue(AttributeUtil.checkMandatoryAttributes(null)); + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given empty attribute list. + */ + @Test + public void testCheckMandatoryAttributesEmptyAttrList() { + final IPersonalAttributeList attrList = new PersonalAttributeList(); + assertTrue(AttributeUtil.checkMandatoryAttributes(attrList)); + } + + /** + * Tests the + * {@link AttributeUtil#checkMandatoryAttributes(IPersonalAttributeList)} + * method for the given attribute list (missing mandatory attribute). + */ + @Test + public void testCheckMandatoryAttributesMissingAttr() { + final IPersonalAttributeList attrList = new PersonalAttributeList(); + attrList.populate("isAgeOver:true:[]:NotAvailable;"); + assertFalse(AttributeUtil.checkMandatoryAttributes(attrList)); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/ComplexAttributesMarshalling.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/ComplexAttributesMarshalling.java new file mode 100644 index 000000000..c7e195fa6 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/ComplexAttributesMarshalling.java @@ -0,0 +1,187 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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. + * + * --- + * + * Test cases for marshalling complex attributes. + * + * Implemented are two testcases for marshalling and unmarshalling. These testcases are + * for canonical residenc address and has bank account. + */ + +package eu.stork.peps.tests; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBElement; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; +import javax.xml.transform.stream.StreamSource; + +import org.junit.Test; + +import eu.stork.peps.complex.attributes.CanonicalAddressType; +import eu.stork.peps.complex.attributes.HasAccountInBankType; +import eu.stork.peps.complex.attributes.ObjectFactory; + +/** + * @author Advania + * + * Examples on how to use the jaxb marshaller. + * + * The classes are created from the StorkcomplexAttributes.xsd schema located in resources. + * + * @version $Revision: 1.00 $, $Date: 2014-17-02 11:15:00 $ + * + */ + +public class ComplexAttributesMarshalling { + + /** + * Test marshalling canonical address + * + * + * IS + * Reykjavik + * RVK + * Reykjavik + * 101 + * Laugavegur + * 1 + * 10 + * + */ + @Test + public void testMarshallCanonicalResidencAddress() + { + try + { + final CanonicalAddressType object = new CanonicalAddressType(); + object.setApartmentNumber("10"); + object.setCountryCodeAddress("IS"); + object.setMunicipalityCode("RVK"); + object.setPostalCode("101"); + object.setState("Reykjavik"); + object.setStreetName("Laugavegur"); + object.setStreetNumber("1"); + object.setTown("Reykjavik"); + + final JAXBContext context = JAXBContext.newInstance(CanonicalAddressType.class); + final Marshaller m = context.createMarshaller(); + m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); + final ObjectFactory objf = new ObjectFactory(); + + m.marshal(objf.createCanonicalResidenceAddress(object), new FileOutputStream("CanonicalAddressType.xml")); + m.marshal(objf.createCanonicalResidenceAddress(object), System.out); + } + catch (JAXBException | FileNotFoundException e) + { + e.printStackTrace(); + } + } + + /** + * Test unmarshalling canonical address + * + * + * IS + * Reykjavik + * RVK + * Reykjavik + * 101 + * Laugavegur + * 1 + * 10 + * + */ + @Test + public void testUnmarshallCanonicalAddress() + { + JAXBContext uContext; + try + { + uContext = JAXBContext.newInstance(CanonicalAddressType.class); + final Unmarshaller u = uContext.createUnmarshaller(); + final File file = new File("CanonicalAddressType.xml"); + + final JAXBElement root = u.unmarshal(new StreamSource(file), CanonicalAddressType.class); + final CanonicalAddressType foo = root.getValue(); + + final String A = foo.getStreetName(); + final String B = foo.getStreetNumber(); + + System.out.println("Streetname: " + A); + System.out.println("Streetnumber: " + B); + + } + catch (final JAXBException e) + { + e.printStackTrace(); + } + } + + /** + * Test marshalling has bank account + * + * + * Arion + * 3 + * + */ + @Test + public void testMarshallHasBankAccount() + { + try + { + final HasAccountInBankType object = new HasAccountInBankType(); + object.setAQAA(3); + object.setBankName("Arion Bank"); + final JAXBContext context = JAXBContext.newInstance(HasAccountInBankType.class); + final Marshaller m = context.createMarshaller(); + final ObjectFactory o = new ObjectFactory(); + m.marshal(o.createHasAccountInBank(object), new FileOutputStream ("hasbankaccount.xml")); + m.marshal(o.createHasAccountInBank(object), System.out); + + } catch (JAXBException | FileNotFoundException e) { + e.printStackTrace(); + } + } + /** + * Test unmarshalling has bank account + * + * + * Arion + * 3 + * + */ + @Test + public void testUnmarshallHasBankAccount() + { + try + { + final JAXBContext context = JAXBContext.newInstance(HasAccountInBankType.class); + final Unmarshaller um = context.createUnmarshaller(); + final File file = new File("hasbankaccount.xml"); + final JAXBElement root = um.unmarshal(new StreamSource(file), HasAccountInBankType.class); + final HasAccountInBankType foo = root.getValue(); + System.out.println(foo.getBankName()); + } catch (final JAXBException e) { + e.printStackTrace(); + } + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/DateUtilTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/DateUtilTestCase.java new file mode 100644 index 000000000..5d2296997 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/DateUtilTestCase.java @@ -0,0 +1,294 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import java.sql.Timestamp; +import java.util.Properties; + +import org.joda.time.DateTime; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.DateUtil; +import eu.stork.peps.auth.commons.PEPSUtil; +import eu.stork.peps.auth.commons.exceptions.SecurityPEPSException; + +/** + * The PersonalAttribute's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.2 $, $Date: 2010-11-17 05:17:03 $ + */ +public final class DateUtilTestCase { + + /** + * Stork Format date. + */ + private static final String FORMAT = "yyyyMMdd"; + + /** + * Expected 10 value. + */ + private static final int TEN = 10; + + /** + * Expected 11 value. + */ + private static final int ELEVEN = 11; + + /** + * The testing Date ("current" date). + */ + private static final DateTime TESTDATE = new DateTime(2011, 10, 10, 15, 20, + 0, 0); + + /** + * Init DateUtilTestCase class. + */ + @BeforeClass + public static void runsBeforeTheTestSuite() { + final Properties configs = new Properties(); + configs.setProperty("invalidAgeDateValue.code", "35"); + configs.setProperty("invalidAttributeValue.code", "34"); + configs + .setProperty( + "invalidAttributeValue.message", + "Unexpected or invalid content was encountered within a " + + " or element."); + PEPSUtil.createInstance(configs); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year against + * the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromYear() { + Assert.assertTrue(TEN == DateUtil.calculateAge("2000", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year and month + * against the testDate: 2011-10-10 15:20:00.0. Must return 11. + */ + @Test + public void calculateAgeFromEarlyMonth() { + Assert.assertTrue(ELEVEN == DateUtil.calculateAge("200001", TESTDATE, + FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year and month + * against the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromSameMonth() { + Assert.assertTrue(TEN == DateUtil.calculateAge("200010", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given year and month + * against the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromLaterMonth() { + Assert.assertTrue(TEN == DateUtil.calculateAge("200011", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return 11. + */ + @Test + public void calculateAgeFromEarlyFullDate() { + Assert.assertTrue(ELEVEN == DateUtil.calculateAge("20000101", TESTDATE, + FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return 11. + */ + @Test + public void calculateAgeFromSameDay() { + Assert.assertTrue(ELEVEN == DateUtil.calculateAge("20001010", TESTDATE, + FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return 10. + */ + @Test + public void calculateAgeFromLaterFullDate() { + Assert.assertTrue(TEN == DateUtil + .calculateAge("20001011", TESTDATE, FORMAT)); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromInvalidDate() { + DateUtil.calculateAge("200", TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromInvalidMonth() { + DateUtil.calculateAge("200013", TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromInvalidDay() { + DateUtil.calculateAge("20000230", TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromNullDate() { + DateUtil.calculateAge(null, TESTDATE, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromNullCurDate() { + DateUtil.calculateAge("2000", null, FORMAT); + } + + /** + * Tests the {@link DateUtil#calculateAge} method for the given full date + * against the testDate: 2011-10-10 15:20:00.0. Must return a + * SecurityPEPSException exception. + */ + @Test(expected = SecurityPEPSException.class) + public void calculateAgeFromNullFormat() { + DateUtil.calculateAge("2000", TESTDATE, null); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return true + */ + @Test + public void isValidFormatDateFromYear() { + Assert.assertTrue(DateUtil.isValidFormatDate("2000", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year and + * month. Must return true. + */ + @Test + public void isValidFormatDateFromMonth() { + Assert.assertTrue(DateUtil.isValidFormatDate("200001", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDate() { + Assert.assertTrue(DateUtil.isValidFormatDate("20000101", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateInvalidYear() { + Assert.assertFalse(DateUtil.isValidFormatDate("200", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateInvalidMonth() { + Assert.assertFalse(DateUtil.isValidFormatDate("200013", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateInvalidDate() { + Assert.assertFalse(DateUtil.isValidFormatDate("20010229", FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateNullDate() { + Assert.assertFalse(DateUtil.isValidFormatDate(null, FORMAT)); + } + + /** + * Tests the {@link DateUtil#isValidFormatDate} method for the given year. + * Must return false. + */ + @Test + public void isValidFormatDateNullFormat() { + Assert.assertFalse(DateUtil.isValidFormatDate("2000", null)); + } + + /** + * Tests the {@link DateUtil#currentTimeStamp()} method for the current + * TimeStamp (TS). Must return true. + */ + @Test + public void testCurrentTimeStampBefore() { + Timestamp ts = DateUtil.currentTimeStamp(); + Assert.assertNotSame(ts, DateUtil.currentTimeStamp()); + } + + /** + * Tests the {@link DateUtil#currentTimeStamp()} method for the current + * TimeStamp (TS). Must return true. + */ + @Test + public void testCurrentTimeStampAfter() { + Timestamp ts = DateUtil.currentTimeStamp(); + Assert.assertEquals(DateUtil.currentTimeStamp(), ts); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PEPSUtilTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PEPSUtilTestCase.java new file mode 100644 index 000000000..d4841ed43 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PEPSUtilTestCase.java @@ -0,0 +1,553 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; + +import java.util.Properties; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSErrors; +import eu.stork.peps.auth.commons.PEPSParameters; +import eu.stork.peps.auth.commons.PEPSUtil; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.exceptions.InternalErrorPEPSException; +import eu.stork.peps.auth.commons.exceptions.InvalidParameterPEPSException; + +/** + * The PEPSUtil's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com + * + * @version $Revision: $, $Date: $ + */ +public final class PEPSUtilTestCase { + + /** + * Message example. + */ + private static final String MESSAGE_SAMPLE = "003002 - Authentication Failed"; + + /** + * Error message example. + */ + private static final String ERROR_MESSAGE_SAMPLE = "Authentication Failed"; + + /** + * Error code example. + */ + private static final String ERROR_CODE_SAMPLE = "003002"; + + /** + * Properties values for testing proposes. + */ + private static final Properties CONFIGS1 = new Properties(); + + /** + * Properties values for testing proposes. + */ + private static final Properties CONFIGS2 = new Properties(); + + /** + * The empty string value: "". + */ + private static final String EMPTY_STRING = ""; + + /** + * The empty byte value: []. + */ + private static final byte[] EMPTY_BYTE = new byte[] {}; + + /** + * The empty byte hash value. + */ + private static final byte[] EMPTY_HASH_BYTE = new byte[] { -49, -125, -31, + 53, 126, -17, -72, -67, -15, 84, 40, 80, -42, 109, -128, 7, -42, 32, -28, + 5, 11, 87, 21, -36, -125, -12, -87, 33, -45, 108, -23, -50, 71, -48, -47, + 60, 93, -123, -14, -80, -1, -125, 24, -46, -121, 126, -20, 47, 99, -71, 49, + -67, 71, 65, 122, -127, -91, 56, 50, 122, -7, 39, -38, 62 }; + + /** + * The SAML example byte[] value. + */ + private static final byte[] SAML_BYTE_SAMPLE = new byte[] { 60, 115, 97, 109, + 108, 62, 46, 46, 46, 60, 47, 115, 97, 109, 108 }; + + /** + * The SAML's Base64 example value. + */ + private static final String SAML_BASE64_SAMPLE = "PHNhbWw+Li4uPC9zYW1s"; + + /** + * The SAML's Base64 byte[] example value. + */ + private static byte[] SAML_BASE64_BYTE_SAMPLE = new byte[] { 80, 72, 78, 104, + 98, 87, 119, 43, 76, 105, 52, 117, 80, 67, 57, 122, 89, 87, 49, 115 }; + + /** + * The SAML's Base64 Hash byte[] example value. + */ + private static byte[] HASH_BYTE_SAMPLE = new byte[] { 67, 38, 11, 115, 49, + -5, 54, -85, 38, 43, -99, 96, 71, -41, 50, -96, 71, -86, 90, -97, 66, -67, + 90, 101, 30, 82, -13, 60, -106, -72, -103, -75, 19, 2, -107, 107, -6, -56, + 34, -111, -44, -57, -26, -5, 33, 78, -1, 30, 21, 74, -26, 118, -46, -12, + -102, 12, -56, 30, -59, -104, -21, -42, -103, 82 }; + + /** + * Init PEPSUtilTestCase class. + */ + @BeforeClass + public static void runsBeforeTheTestSuite() { + + CONFIGS1.setProperty("max.attrList.size", "20000"); + CONFIGS1.setProperty("attrList.code", "202005"); + CONFIGS1.setProperty("attrList.message", "invalid.attrList.parameter"); + + CONFIGS1.setProperty("max.qaaLevel.size", "1"); + CONFIGS1.setProperty("max.spUrl.size", "inv"); + CONFIGS1.setProperty("validation.active", "true"); + CONFIGS1.setProperty("hashDigest.className", + "org.bouncycastle.crypto.digests.SHA512Digest"); + CONFIGS1.setProperty("invalidAgeDateValue.code", "35"); + CONFIGS1.setProperty("invalidAttributeValue.code", "34"); + CONFIGS1.setProperty("invalidAttributeValue.message", + "Unexpected or invalid content was encountered within a " + + " or element."); + } + + /** + * Tests the {@link PEPSUtil#createInstance(Properties)} method for the given + * properties object. + */ + @Test + public void testCreateInstance() { + Assert.assertNotNull(PEPSUtil.createInstance(CONFIGS2)); + } + + /** + * Tests the {@link PEPSUtil#getConfigs()}. + */ + @Test + public void testGetConfigs() { + final PEPSUtil pepsUtils = PEPSUtil.createInstance(CONFIGS1); + assertEquals(pepsUtils.getConfigs(), CONFIGS1); + } + + /** + * Tests the {@link PEPSUtil#getConfigs()}. + */ + @Test + public void testGetConfigsDifferent() { + final PEPSUtil pepsUtils = PEPSUtil.createInstance(CONFIGS1); + assertNotSame(pepsUtils.getConfigs(), CONFIGS2); + } + + /** + * Tests the {@link PEPSUtil#getConfig(String)} method for the given existing + * config. + */ + @Test + public void testGetConfigExists() { + assertEquals(PEPSUtil.getConfig("hashDigest.className"), + "org.bouncycastle.crypto.digests.SHA512Digest"); + } + + /** + * Tests the {@link PEPSUtil#getConfig(String)} method for the given not + * existing config. + */ + @Test + public void testGetConfigNoExists() { + assertNull(PEPSUtil.getConfig("doesnt.exists")); + } + + /** + * Tests the {@link PEPSUtil#getConfig(String)} method for the given null + * value. + */ + @Test(expected = NullPointerException.class) + public void testGetConfigNull() { + assertNull(PEPSUtil.getConfig(null)); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterExists() { + assertTrue(PEPSUtil.isValidParameter("qaaLevel", "1")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterExistsGreat() { + assertFalse(PEPSUtil.isValidParameter("qaaLevel", "12")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterExistsIvalidConf() { + assertFalse(PEPSUtil + .isValidParameter("spUrl", "http://localhost:8080/SP/")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterNotExists() { + assertFalse(PEPSUtil.isValidParameter("doesntexists", + "http://localhost:8080/SP/")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterNullParamName() { + assertFalse(PEPSUtil.isValidParameter(null, "http://localhost:8080/SP/")); + } + + /** + * Tests the {@link PEPSUtil#isValidParameter(String, String)} method for the + * given param values. + */ + @Test + public void testIsValidParameterNullParamValue() { + assertFalse(PEPSUtil.isValidParameter("spUrl", null)); + } + + /** + * Tests the {@link PEPSUtil#validateParameter(String, String, Object)} method + * for the given object values. + */ + @Test + public void testValidateParameterValid() { + final IPersonalAttributeList persAttrList = new PersonalAttributeList(); + persAttrList.populate("isAgeOver:true:[15,]:Available;"); + PEPSUtil.validateParameter("ServiceProviderAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), persAttrList); + } + + /** + * Tests the {@link PEPSUtil#validateParameter(String, String, Object)} method + * for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterNull() { + PEPSUtil.validateParameter("ServiceProviderAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), null); + } + + /** + * Tests the {@link PEPSUtil#validateParameter(String, String, String)} method + * for the given string values. + * + * The tested class just invokes + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * so further tests will be later. + */ + @Test + public void testValidateParameter() { + PEPSUtil.validateParameter("ServiceProviderAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), + "isAgeOver:true:[15,]:Available;"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, PEPSErrors)} + * method for the given string value and {@link PEPSErrors} enum. + * + * The tested class just invokes + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * so further tests will be later. + */ + @Test + public void testValidateParameterPEPSErrors() { + PEPSUtil.validateParameter("CountrySelectorAction", + PEPSParameters.ATTRIBUTE_LIST.toString(), + "isAgeOver:true:[15,]:Available;", + PEPSErrors.SP_COUNTRY_SELECTOR_INVALID_ATTR); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test + public void testValidateParameterValidParams() { + PEPSUtil.validateParameter("ServiceProviderAction", "qaaLevel", "1", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterInvalidParamValue() { + PEPSUtil.validateParameter("ServiceProviderAction", "qaaLevel", "10", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterInvalidParamName() { + PEPSUtil.validateParameter("ServiceProviderAction", "doesnt.exists", "1", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterNullParamName() { + PEPSUtil.validateParameter("ServiceProviderAction", null, "1", + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the + * {@link PEPSUtil#validateParameter(String, String, String, String, String)} + * method for the given string values. + */ + @Test(expected = InvalidParameterPEPSException.class) + public void testValidateParameterNullParamValue() { + PEPSUtil.validateParameter("ServiceProviderAction", "qaaLevel", null, + "qaaLevel.code", "qaaLevel.message"); + } + + /** + * Tests the {@link PEPSUtil#encodeSAMLToken(byte[])} method for the given + * string value. + */ + @Test + public void testEncodeSAMLToken() { + assertEquals(PEPSUtil.encodeSAMLToken(SAML_BYTE_SAMPLE), SAML_BASE64_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#encodeSAMLToken(byte[])} method for the given + * null. + */ + @Test(expected = NullPointerException.class) + public void testEncodeSAMLTokenNull() { + assertNotSame(PEPSUtil.encodeSAMLToken(null), SAML_BASE64_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#encodeSAMLToken(byte[])} method for the given + * empty byte[] value. + */ + @Test + public void testEncodeSAMLTokenEmpty() { + assertEquals(PEPSUtil.encodeSAMLToken(EMPTY_BYTE), EMPTY_STRING); + } + + /** + * Tests the {@link PEPSUtil#decodeSAMLToken(byte[])} method for the given + * byte[] value. + */ + @Test + public void testDecodeSAMLToken() { + assertArrayEquals(PEPSUtil.decodeSAMLToken(SAML_BASE64_SAMPLE), + SAML_BYTE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#decodeSAMLToken(byte[])} method for the given + * null value. + */ + @Test(expected = NullPointerException.class) + public void testDecodeSAMLTokenNull() { + assertNotSame(PEPSUtil.decodeSAMLToken(null), SAML_BYTE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#decodeSAMLToken(byte[])} method for the given + * empty string value. + */ + @Test(expected = StringIndexOutOfBoundsException.class) + public void testDecodeSAMLTokenEmpty() { + assertTrue(PEPSUtil.decodeSAMLToken(EMPTY_STRING) == EMPTY_BYTE); + } + + /** + * Tests the {@link PEPSUtil#hashPersonalToken(byte[])} method for the given + * byte[] value. + */ + @Test + public void testHashPersonalToken() { + assertArrayEquals(PEPSUtil.hashPersonalToken(SAML_BASE64_BYTE_SAMPLE), + HASH_BYTE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#hashPersonalToken(byte[])} method for the given + * null value. + */ + @Test(expected = InternalErrorPEPSException.class) + public void testHashPersonalTokenNull() { + assertNull(PEPSUtil.hashPersonalToken(null)); + } + + /** + * Tests the {@link PEPSUtil#hashPersonalToken(byte[])} method for the given + * empty value. + */ + @Test + public void testHashPersonalTokenEmpty() { + assertArrayEquals(PEPSUtil.hashPersonalToken(EMPTY_BYTE), EMPTY_HASH_BYTE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * correct message. + */ + @Test + public void testGetStorkErrorCodeExists() { + assertEquals(PEPSUtil.getStorkErrorCode(MESSAGE_SAMPLE), ERROR_CODE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * invalid message. + */ + @Test + public void testGetStorkErrorCodeNoExists() { + assertNull(PEPSUtil.getStorkErrorCode(ERROR_MESSAGE_SAMPLE)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * empty message. + */ + @Test + public void testGetStorkErrorCodeEmpty() { + assertNull(PEPSUtil.getStorkErrorCode(EMPTY_STRING)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * null message. + */ + @Test + public void testGetStorkErrorCodeNull() { + assertNull(PEPSUtil.getStorkErrorCode(null)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * invalid message. + */ + @Test + public void testGetStorkErrorCodeWithSepFake() { + assertNull(PEPSUtil.getStorkErrorCode("-")); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorCode(String)} method for the given + * invalid message. + */ + @Test + public void testGetStorkErrorCodeWithSepAndCodeFake() { + assertNull(PEPSUtil.getStorkErrorCode("000001 -")); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given correct message. + */ + @Test + public void testGetStorkErrorMessageExists() { + assertEquals(PEPSUtil.getStorkErrorMessage(MESSAGE_SAMPLE), + ERROR_MESSAGE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given invalid message. + */ + @Test + public void testGetStorkErrorMessageNoExists() { + assertEquals(PEPSUtil.getStorkErrorMessage(ERROR_MESSAGE_SAMPLE), + ERROR_MESSAGE_SAMPLE); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given empty message. + */ + @Test + public void testGetStorkErrorMessageEmpty() { + assertEquals(PEPSUtil.getStorkErrorMessage(EMPTY_STRING), + EMPTY_STRING); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given null message. + */ + @Test + public void testGetStorkErrorMessageNull() { + assertNull(PEPSUtil.getStorkErrorMessage(null)); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given invalid message. + */ + @Test + public void testGetStorkErrorMessageWithSepFake() { + assertEquals(PEPSUtil.getStorkErrorMessage("-"),"-"); + } + + /** + * Tests the {@link PEPSUtil#getStorkErrorMessage(String)} method for the + * given invalid message. + */ + @Test + public void testGetStorkErrorMessageWithSepAndCodeFake() { + assertEquals(PEPSUtil.getStorkErrorMessage("000001 -"),"000001 -"); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeListTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeListTestCase.java new file mode 100644 index 000000000..7052b320a --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeListTestCase.java @@ -0,0 +1,747 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKStatusCode; + +/** + * The PersonalAttributeList's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.5 $, $Date: 2010-11-17 05:17:02 $ + */ +public final class PersonalAttributeListTestCase { + + /** + * isAgeOver constant value. + */ + private static final String ISAGEOVER_CONS = "isAgeOver"; + + /** + * 1 constant value. + */ + private static final int ONE_CONS = 1; + + /** + * 2 constant value. + */ + private static final int TWO_CONS = 2; + + /** + * An empty attribute. + */ + @SuppressWarnings("unused") + private static final PersonalAttributeList EMPTY_ATTR_LIST = + new PersonalAttributeList(0); + + /** + * An attribute with a complex value (canonicalResidenceAddress). + */ + private static PersonalAttribute complexAttrValue = null; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST = + "isAgeOver:true:[15,]:Available;"; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST2 = + "isAgeOver:true:[18,]:Available;"; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST3 = + "isAgeOver:true:[15,]:Available;isAgeOver:true:[18,]:Available;"; + + /** + * Simple attribute value list string. + */ + private static final String SIMPLE_ATTRLIST3_REVERSE = + "isAgeOver:true:[18,]:Available;isAgeOver:true:[15,]:Available;"; + /** + * Simple attribute value list string. + */ + private static final String COMPLEX_ATTRLIST = + "canonicalResidenceAddress:true:[postalCode=4100,apartmentNumber=Ed. B," + + "state=Porto,countryCodeAddress=PT,streetNumber=379," + + "streetName=Avenida Sidonio Pais,town=Porto,]:Available;"; + /** + * Mix attribute list string. + */ + private static final String STR_MIX_ATTR_LIST = + "isAgeOver:true:[15,]:Available;canonicalResidenceAddress:true:[" + + "postalCode=4100,apartmentNumber=Ed.B,state=Porto,countryCodeAddress=PT," + + "streetNumber=379,streetName=Avenida Sidonio Pais,town=Porto,]:" + + "Available;"; + + /** + * Mix attribute list 2 string. + */ + private static final String STR_MIX_ATTR_LIST2 = + "isAgeOver:true:[15,]:Available;canonicalResidenceAddress:true:[" + + "postalCode=4100,apartmentNumber=Ed.B,state=Porto,countryCodeAddress=PT," + + "streetNumber=379,streetName=Avenida Sidonio Pais,town=Porto,]:Available;" + + "mandateContent:true:[" + + "isJoint=\"isjoint\",typeOfPower=\"power\",ValidTo=\"validto\",validfrom=\"validfrom\",AQAA=\"3\",isChained=\"ischained\",]:" + + "Available;"; + + /** + * Attribute List example. + */ + @SuppressWarnings({ "serial" }) + private static final PersonalAttribute ATTR_VALUE = new PersonalAttribute( + "age", true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + /** + * Init PersonalAttributeListTestCase class. + */ + @SuppressWarnings("serial") + @BeforeClass + public static void runsBeforeTheTestSuite() { + final Map values = new HashMap() { + { + put("countryCodeAddress", "PT"); + put("state", "Porto"); + put("town", "Porto"); + put("postalCode", "4100"); + put("streetName", "Avenida Sidonio Pais"); + put("streetNumber", "379"); + put("apartmentNumber", "Ed. B"); + } + }; + + complexAttrValue = + new PersonalAttribute("canonicalResidenceAddress", true, values, + STORKStatusCode.STATUS_AVAILABLE.toString()); + + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 1 - Simple attribute. + */ + @Test + public void testAddSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(ATTR_VALUE); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 1 - Complex attribute. + */ + @Test + public void testAddCompleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(complexAttrValue); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 0 - no attribute. + */ + @Test + public void testAddNull() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(null); + Assert.assertTrue(attrList.size() == 0); + } + + /** + * Testing Personal Attribute List add method. Same attribute name added + * twice. Personal Attribute list must be size 2 - IsAgeOver attribute added + * twice. + */ + @SuppressWarnings("serial") + @Test + public void testAddSameAttrName() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List add method. Same attribute name added + * twice. Personal Attribute list must be size 2 - IsAgeOver attribute added + * twice. + */ + @SuppressWarnings("serial") + @Test + public void testAddSameAttrNameEmpty() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add(""); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 1 - Simple Value. + */ + @Test + public void testPutSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(ATTR_VALUE.getName(), ATTR_VALUE); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 1 - Complex Value. + */ + @Test + public void testPutComplexAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(ATTR_VALUE.getName(), complexAttrValue); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 0 - no attribute. + */ + @Test + public void testPutNull() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put("", null); + Assert.assertTrue(attrList.size() == 0); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 2 - IsAgeOver attribute added twice. + */ + @SuppressWarnings("serial") + @Test + public void testPutSameAttrName() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List put method. Personal Attribute list must be + * size 2 - IsAgeOver attribute added twice. + */ + @SuppressWarnings("serial") + @Test + public void testPutSameAttrNameEmpty() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add(""); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List get method. Personal Attribute list must be + * size 1 - Simple attribute. + */ + @Test + public void testGetSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(ATTR_VALUE); + Assert.assertEquals(ATTR_VALUE, attrList.get(ATTR_VALUE.getName())); + } + + /** + * Testing Personal Attribute List add method. Personal Attribute list must be + * size 1 - Complex attribute. + */ + @Test + public void testGetCompleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(complexAttrValue); + Assert.assertEquals(complexAttrValue.toString(), + attrList.get(complexAttrValue.getName()).toString()); + } + + /** + * Testing Personal Attribute List get method. Personal Attribute list must be + * size 2 - IsAgeOver attribute. + */ + @SuppressWarnings("serial") + @Test + public void testGetIsAgeOverAttr() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertEquals(SIMPLE_ATTRLIST, + attrList.get(attrValueUnder.getName()).toString()); + Assert.assertEquals(SIMPLE_ATTRLIST2, + attrList.get(attrValueOver.getName()).toString()); + } + + /** + * Testing Personal Attribute List populate method. Personal Attribute list + * must be size 1 - Simple attribute. + */ + @Test + public void testPopulateSimpleAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(SIMPLE_ATTRLIST); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List populate method. Personal Attribute list + * must be size 1 - Complex attribute. + */ + @Test + public void testPopulateComplexAttr() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(COMPLEX_ATTRLIST); + Assert.assertTrue(attrList.size() == 1); + } + + /** + * Testing Personal Attribute List populate method. Personal Attribute list + * must be size 1 - Simple and Complex attribute. + */ + @Test + public void testPopulateMixAttrs() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(STR_MIX_ATTR_LIST); + Assert.assertTrue(attrList.size() == 2); + } + + /** + * Testing Personal Attribute List toString method using add. + */ + @SuppressWarnings("serial") + @Test + public void testToStringFromAdd() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertEquals(SIMPLE_ATTRLIST3_REVERSE, attrList.toString()); + } + + /** + * Testing Personal Attribute List toString method using put. + * + */ + @SuppressWarnings("serial") + @Test + public void testToStringFromPut() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertEquals(SIMPLE_ATTRLIST3_REVERSE, attrList.toString()); + } + + /** + * Testing Personal Attribute List toString method using populate. + */ + @Test + public void testToStringFromSimplePopulate() { + final String strAttrList = "isAgeOver:true"; + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(strAttrList); + Assert.assertEquals("isAgeOver:true:[]:;", attrList.toString()); + } + + /** + * Testing Personal Attribute List toString method using populate. + */ + @Test + public void testToStringFromPopulate() { + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.populate(SIMPLE_ATTRLIST3); + Assert.assertEquals(SIMPLE_ATTRLIST3_REVERSE, attrList.toString()); + } + + /** + * Testing Personal Attribute List populate method, with invalid values. + */ + @Test + public void testPopulateWithInvalidValuesFormat() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate("name:type:values:status;"); + Assert.assertEquals(pal, new PersonalAttributeList()); + } + + /** + * Testing Personal Attribute List populate method, with invalid format. + */ + @Test + public void testPopulateWithInvalidFormat() { + + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate("name:type::status;"); + Assert.assertEquals(pal, new PersonalAttributeList()); + } + + /** + * Testing Personal Attribute List clone method using add. + */ + @SuppressWarnings("serial") + @Test + public void testCloneFromAdd() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.add(attrValueUnder); + attrList.add(attrValueOver); + Assert.assertNotSame(attrList, attrList.clone()); + } + + /** + * Testing Personal Attribute List clone method using put. + */ + @SuppressWarnings("serial") + @Test + public void testCloneFromPut() { + final PersonalAttribute attrValueUnder = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + final PersonalAttribute attrValueOver = + new PersonalAttribute(ISAGEOVER_CONS, true, new ArrayList() { + { + add("18"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + final PersonalAttributeList attrList = new PersonalAttributeList(1); + attrList.put(attrValueUnder.getName(), attrValueUnder); + attrList.put(attrValueOver.getName(), attrValueOver); + Assert.assertNotSame(attrList, attrList.clone()); + } + + /** + * Testing Personal Attribute List clone method using populate. + */ + @Test + public void testCloneFromPopulate() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(SIMPLE_ATTRLIST3); + Assert.assertNotSame(pal, pal.clone()); + } + + /** + * Testing Personal Attribute List iterator. + */ + @Test + public void testIterator() { + final String strAttrList = + "isAgeOver:true:[15,]:Available;isAgeOver:true:[18,]:Available;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + final Iterator itAttr = pal.iterator(); + while (itAttr.hasNext()) { + final PersonalAttribute attr = itAttr.next(); + Assert.assertEquals(ISAGEOVER_CONS, attr.getName()); + } + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method with empty attribute list. + */ + @Test + public void testGetOptionalAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getOptionalAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method without optional attributes. + */ + @Test + public void testGetOptionalAttributesWithoutOptional() { + final String strAttrList = + "isAgeOver:true:[15,]:Available;isAgeOver:true:[18,]:Available;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getOptionalAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method with one optional attribute. + */ + @Test + public void testGetOptionalAttributesWithOneOptional() { + final String strAttrList = + "age:false:[]:;isAgeOver:true:[15,]:;isAgeOver:true:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getOptionalAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetOptionalAttributes method with two optional attribute. + */ + @Test + public void testGetOptionalAttributesWithOnlyOptional() { + final String strAttrList = + "age:false:[]:;isAgeOver:false:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getOptionalAttributes().size() == TWO_CONS); + } + + /** + * Testing Personal Attribute List's getMandatoryAttributes method with empty attribute list. + */ + @Test + public void testGetMandatoryAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getMandatoryAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getMandatoryAttributes method without mandatory attributes. + */ + @Test + public void testGetMandatoryAttributesWithoutMandatory() { + final String strAttrList = + "isAgeOver:false:[15,]:Available;isAgeOver:false:[18,]:Available;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getMandatoryAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with one mandatory attribute. + */ + @Test + public void testGetMandatoryAttributesWithOneMandatory() { + final String strAttrList = + "age:true:[]:;isAgeOver:false:[15,]:;isAgeOver:false:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getMandatoryAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with two mandatory attribute. + */ + @Test + public void testGetMandatoryAttributesWithOnlyMandatory() { + final String strAttrList = + "age:true:[]:;isAgeOver:true:[18,]:;"; + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(strAttrList); + Assert.assertTrue(pal.getMandatoryAttributes().size() == TWO_CONS); + } + + /** + * Testing Personal Attribute List's getSimpleValueAttributes method with empty attribute list. + */ + @Test + public void testGetSimpleValueAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getSimpleValueAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getSimpleValueAttributes() method without simple attributes. + */ + @Test + public void testGetSimpleValueAttributesWithoutSimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(COMPLEX_ATTRLIST); + Assert.assertTrue(pal.getSimpleValueAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getSimpleValueAttributes() method with one simple attribute. + */ + @Test + public void testGetSimpleValueAttributesWithOneSimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(STR_MIX_ATTR_LIST); + Assert.assertTrue(pal.getSimpleValueAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with two simple attribute. + */ + @Test + public void testGetSimpleValueAttributesWithOnlySimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(SIMPLE_ATTRLIST3); + Assert.assertTrue(pal.getSimpleValueAttributes().size() == TWO_CONS); + } + + /** + * Testing Personal Attribute List's getComplexValueAttributes method with empty attribute list. + */ + @Test + public void testGetComplexAttributesWithEmptyList() { + final PersonalAttributeList pal = new PersonalAttributeList(); + Assert.assertTrue(pal.getComplexAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getComplexAttributes() method without complex attributes. + */ + @Test + public void testGetComplexAttributesWithoutSimple() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(SIMPLE_ATTRLIST2); + Assert.assertTrue(pal.getComplexAttributes().isEmpty()); + } + + /** + * Testing Personal Attribute List's getComplexAttributes() method with one complex attribute. + */ + @Test + public void testGetComplexAttributesWithOneComplex() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(STR_MIX_ATTR_LIST); + Assert.assertTrue(pal.getComplexAttributes().size() == ONE_CONS); + } + + /** + * Testing Personal Attribute List's GetMandatoryAttributes method with only two Complex attribute. + */ + @Test + public void testGetComplexAttributesWithOnlyComplex() { + final PersonalAttributeList pal = new PersonalAttributeList(); + pal.populate(STR_MIX_ATTR_LIST2); + Assert.assertTrue(pal.getComplexAttributes().size() == TWO_CONS); + } + +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeTestCase.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeTestCase.java new file mode 100644 index 000000000..458d510e0 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/PersonalAttributeTestCase.java @@ -0,0 +1,182 @@ +/* + * This work is Open Source and licensed by the European Commission under the + * conditions of the European Public License v1.1 + * + * (http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1); + * + * any use of this file implies acceptance of the conditions of this license. + * 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 eu.stork.peps.tests; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import junit.framework.Assert; + +import org.junit.BeforeClass; +import org.junit.Test; + +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.STORKStatusCode; + +/** + * The PersonalAttribute's Test Case. + * + * @author ricardo.ferreira@multicert.com, renato.portela@multicert.com, + * luis.felix@multicert.com, hugo.magalhaes@multicert.com, + * paulo.ribeiro@multicert.com + * @version $Revision: 1.4 $, $Date: 2010-11-17 05:17:03 $ + */ +public final class PersonalAttributeTestCase { + + /** + * An empty attribute. + */ + private static final PersonalAttribute EMPTYATTR = new PersonalAttribute(); + + /** + * An attribute with a complex value (canonicalResidenceAddress). + */ + private static PersonalAttribute complexAttrValue = null; + + /** + * An attribute with a simple value (age). + */ + @SuppressWarnings("serial") + private static final PersonalAttribute ATTR_VALUE = new PersonalAttribute( + "age", true, new ArrayList() { + { + add("15"); + } + }, STORKStatusCode.STATUS_AVAILABLE.toString()); + + /** + * Init PersonalAttributeTestCase class. + */ + @SuppressWarnings("serial") + @BeforeClass + public static void runsBeforeTheTestSuite() { + final Map values = new HashMap() { + { + put("countryCodeAddress", "PT"); + put("state", "Porto"); + put("town", "Porto"); + put("postalCode", "4100"); + put("streetName", "Avenida Sidonio Pais"); + put("streetNumber", "379"); + put("apartmentNumber", "B"); + } + }; + + complexAttrValue = + new PersonalAttribute("canonicalResidenceAddress", true, values, + STORKStatusCode.STATUS_AVAILABLE.toString()); + + } + + /** + * Tests the {@link PersonalAttribute#toString()} method for the given simple + * attribute value. Values must match. + */ + @Test + public void testToStringValues() { + Assert.assertEquals("age:true:[15,]:Available;", ATTR_VALUE.toString()); + } + + /** + * Tests the {@link PersonalAttribute#toString()} method for the given complex + * attribute value. Values must match. + */ + @Test + public void testToStringComplexValues() { + Assert.assertEquals( + "canonicalResidenceAddress:true:[postalCode=4100,apartmentNumber=B," + + "state=Porto,countryCodeAddress=PT,streetNumber=379," + + "streetName=Avenida Sidonio Pais,town=Porto,]:Available;", + complexAttrValue.toString()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyStatus()} method for the given + * empty attribute. Must return true. + */ + @Test + public void testToIsEmptyStatusWithNull() { + Assert.assertTrue(EMPTYATTR.isEmptyStatus()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyStatus()} method for the given + * new attribute. Must return true. + */ + @Test + public void testToIsEmptyStatusWithEmptyString() { + final PersonalAttribute attr = (PersonalAttribute) EMPTYATTR.clone(); + attr.setStatus(""); + Assert.assertTrue(attr.isEmptyStatus()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyValue()} method for the given + * empty attribute. Must return true. + */ + @Test + public void testToIsEmptyValueWithNull() { + final PersonalAttribute attr = (PersonalAttribute) EMPTYATTR.clone(); + attr.setValue(null); + Assert.assertTrue(attr.isEmptyValue()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyValue()} method for the given + * empty attribute. Must return true. + */ + @Test + public void testToIsEmptyValue() { + Assert.assertTrue(EMPTYATTR.isEmptyValue()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyComplexValue()} method for the + * given empty attribute. Must return true. + */ + @Test + public void testToIsEmptyComplexValueWithNull() { + final PersonalAttribute attr = (PersonalAttribute) EMPTYATTR.clone(); + attr.setComplexValue(null); + Assert.assertTrue(attr.isEmptyComplexValue()); + } + + /** + * Tests the {@link PersonalAttribute#isEmptyComplexValue()} method for the + * given empty attribute. Must return true. + */ + @Test + public void testToIsEmptyComplexValueWithEmptyComplexValue() { + Assert.assertTrue(EMPTYATTR.isEmptyComplexValue()); + } + + /** + * Tests the {@link PersonalAttribute#clone()} method for the given attribute. + * Must return true. + */ + @Test + public void testCloneToComplexValue() { + Assert.assertNotSame(complexAttrValue, complexAttrValue.clone()); + } + + /** + * Tests the {@link PersonalAttribute#clone()} method for the given attribute. + * Must return true. + */ + @Test + public void testCloneToValue() { + Assert.assertNotSame(ATTR_VALUE, ATTR_VALUE.clone()); + } +} diff --git a/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/package-info.java b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/package-info.java new file mode 100644 index 000000000..452602210 --- /dev/null +++ b/id/server/stork2-commons/src/test/java/eu/stork/peps/tests/package-info.java @@ -0,0 +1,5 @@ +/** + * This package provides all JUnit test classes. + */ +package eu.stork.peps.tests; + diff --git a/id/server/stork2-commons/src/test/resources/.svn/all-wcprops b/id/server/stork2-commons/src/test/resources/.svn/all-wcprops new file mode 100644 index 000000000..a3a21b424 --- /dev/null +++ b/id/server/stork2-commons/src/test/resources/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 63 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/test/resources +END +log4j.xml +K 25 +svn:wc:ra_dav:version-url +V 73 +/CITnet/svn/STORK2/!svn/ver/19/trunk/Commons/src/test/resources/log4j.xml +END diff --git a/id/server/stork2-commons/src/test/resources/.svn/entries b/id/server/stork2-commons/src/test/resources/.svn/entries new file mode 100644 index 000000000..9274deb98 --- /dev/null +++ b/id/server/stork2-commons/src/test/resources/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +776 +https://webgate.ec.europa.eu/CITnet/svn/STORK2/trunk/Commons/src/test/resources +https://webgate.ec.europa.eu/CITnet/svn/STORK2 + + + +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + +aa842e49-f825-43fc-93ba-11ee9fd5a035 + +log4j.xml +file + + + + +2013-12-20T12:27:56.542475Z +4e990a84da0033594135b05cd01a9cdd +2013-07-25T08:54:09.995385Z +7 +emsomavmi + + + + + + + + + + + + + + + + + + + + + +645 + diff --git a/id/server/stork2-commons/src/test/resources/.svn/text-base/log4j.xml.svn-base b/id/server/stork2-commons/src/test/resources/.svn/text-base/log4j.xml.svn-base new file mode 100644 index 000000000..0ad2ea9a4 --- /dev/null +++ b/id/server/stork2-commons/src/test/resources/.svn/text-base/log4j.xml.svn-base @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/id/server/stork2-commons/src/test/resources/log4j.xml b/id/server/stork2-commons/src/test/resources/log4j.xml new file mode 100644 index 000000000..0ad2ea9a4 --- /dev/null +++ b/id/server/stork2-commons/src/test/resources/log4j.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/id/server/stork2-saml-engine/pom.xml b/id/server/stork2-saml-engine/pom.xml new file mode 100644 index 000000000..cead61eb8 --- /dev/null +++ b/id/server/stork2-saml-engine/pom.xml @@ -0,0 +1,201 @@ + + + MOA.id + moa-id + 1.9.98-SNAPSHOT + + 4.0.0 + eu.stork + SamlEngine + jar + STORKSAMLEngine + + UTF-8 + 1.4.0 + 0.5.2 + 0.5.1 + 1.4.0 + 2.6.0 + ${maven.build.timestamp} + + ${saml.version} + + The STORKSAMLEngine library provides tools to support developers working with the Security Assertion Markup Language (SAML). + + + + + org.opensaml + https://build.shibboleth.net/nexus/content/repositories/releases + + + + shibboleth-release + Internet2 Releases + default + https://build.shibboleth.net/nexus/content/repositories/releases + + false + + + + + + + + eu.stork + Commons + ${commons.version} + + + + org.opensaml + opensaml + ${opensaml.version} + + + org.slf4j + slf4j-api + + + org.slf4j + slf4j-simple + + + org.slf4j + jcl-over-slf4j + + + org.slf4j + log4j-over-slf4j + + + org.slf4j + jul-to-slf4j + + + + + + org.slf4j + slf4j-api + 1.7.5 + + + org.slf4j + slf4j-simple + 1.7.5 + + + org.slf4j + jcl-over-slf4j + 1.7.5 + + + org.slf4j + log4j-over-slf4j + 1.7.5 + + + org.slf4j + jul-to-slf4j + 1.7.5 + + + + commons-io + commons-io + 2.2 + compile + + + xerces + xercesImpl + 2.11.0 + test + + + junit + junit + 4.11 + test + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.3.2 + + 1.6 + 1.6 + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + verify + + jar + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${saml.version} + ${samlspecacept.version} + ${samlspec.version} + None + ${timestamp} + + + + + + + + + metrics + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.5.1 + + + html + xml + + + + + + + + + + diff --git a/id/server/stork2-saml-engine/src/main/java/META-INF/MANIFEST.MF b/id/server/stork2-saml-engine/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 000000000..254272e1c --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java new file mode 100644 index 000000000..26635e337 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngine.java @@ -0,0 +1,415 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine; + +import java.io.ByteArrayInputStream; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import java.util.HashMap; +import java.util.Map; +import java.util.Properties; + +import javax.xml.XMLConstants; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.opensaml.Configuration; +import org.opensaml.DefaultBootstrap; +import org.opensaml.common.SAMLObject; +import org.opensaml.common.SignableSAMLObject; +import org.opensaml.xml.ConfigurationException; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.Marshaller; +import org.opensaml.xml.io.MarshallerFactory; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.io.Unmarshaller; +import org.opensaml.xml.io.UnmarshallerFactory; +import org.opensaml.xml.io.UnmarshallingException; +import org.opensaml.xml.parse.BasicParserPool; +import org.opensaml.xml.parse.XMLParserException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.SAMLEngineSignI; +import eu.stork.peps.auth.engine.core.STORKSAMLCore; +import eu.stork.peps.auth.engine.core.impl.CustomAttributeQueryMarshaller; +import eu.stork.peps.auth.engine.core.impl.CustomAttributeQueryUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SignModuleFactory; +import eu.stork.peps.configuration.ConfigurationCreator; +import eu.stork.peps.configuration.ConfigurationReader; +import eu.stork.peps.configuration.InstanceEngine; +import eu.stork.peps.exceptions.SAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; + +/** + * Class that wraps the operations over SAML tokens, both generation and + * validation of SAML requests and SAML responses. Compliant with "OASIS Secure + * Assertion Markup Language (SAML) 2.0, May 2005", but taking into account + * STORK specific requirements. + * + * @author fjquevedo + * @author iinigo + */ + +public class SAMLEngine { + + /** The Document Builder Factory. */ + private static javax.xml.parsers.DocumentBuilderFactory dbf = null; + + /** The instance of every engine SAML. */ + private static Map instanceConfigs; + + /** The instances of SAML engine. */ + private static Map> instances; + + /** The logger. */ + private static final Logger LOG = LoggerFactory.getLogger(SAMLEngine.class + .getName()); + + /** The Constant MODULE_SIGN_CONF. */ + private static final String MODULE_SIGN_CONF = "SignatureConf"; + + /** The Constant SAML_ENGINE_SIGN_CLASS. */ + private static final String SAML_ENGINE_SIGN_CLASS = "class"; + + /** The Constant SAML_ENGINE_CONF. */ + private static final String SAML_ENGINE_CONF = "SamlEngineConf"; + + /** The Constant SAML_ENGINE_FILE_CONF. */ + private static final String SAML_ENGINE_FILE_CONF = "fileConfiguration"; + + /** The codification of characters. */ + private static final String CHARACTER_ENCODING = "UTF-8"; + + /** The SAML core. */ + private STORKSAMLCore samlCore; + + /** The Module of Signature. */ + private SAMLEngineSignI signer; + + + /** Initializes the SAML engine. */ + /** Configure Document Builder Factory. */ + + static { + startUp(); + loadDocumentFactory(); + } + + /** + * Load document factory. + */ + private static void loadDocumentFactory() { + try { + dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance(); + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + dbf.setNamespaceAware(true); + dbf.setIgnoringComments(true); + } catch (ParserConfigurationException e) { + LOG.error("Error parser configuration."); + throw new STORKSAMLEngineRuntimeException(e); + } + } + + /** + * Method that initializes the basic services for the SAML Engine, like the + * OpenSAML library and the BouncyCastle provider. + */ + private static void startUp() { + + LOG.info("SAMLEngine: Initialize OpenSAML"); + + + +/* Commented because it makes a problems with PVP2 MOA-ID + try { + DefaultBootstrap.bootstrap(); + } catch (ConfigurationException e) { + LOG.error("Problem initializing the OpenSAML library."); + throw new STORKSAMLEngineRuntimeException(e); + } +*/ + + LOG.debug("Read all file configurations. (instances of SAMLEngine)"); + try { + instanceConfigs = ConfigurationReader.readConfiguration(); + } catch (SAMLEngineException e) { + LOG.error("Error read configuration file."); + throw new STORKSAMLEngineRuntimeException(e); + } + + LOG.debug("Create all instances of saml engine. (instances of SAMLEngine)"); + try { + instances = ConfigurationCreator + .createConfiguration(instanceConfigs); + } catch (STORKSAMLEngineException e) { + LOG.error("Error initializing instances from Stork SAML engine."); + throw new STORKSAMLEngineRuntimeException(e); + } + } + + /** + * Instantiates a new SAML engine. + * + * @param nameInstance the name instance + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + protected SAMLEngine(final String nameInstance) + throws STORKSAMLEngineException { + LOG.info("Loading Specific Configuration."); + + LOG.debug("Create intance of saml messages."); + + Map instance = instances.get(nameInstance); + + if (instance == null || instance.isEmpty()) { + LOG.error("Instance: " + nameInstance + " not exist."); + throw new STORKSAMLEngineException("Instance: " + nameInstance + + " not exist."); + } + + Properties properties = (Properties) instance.get(SAML_ENGINE_CONF); + + if (properties == null) { + LOG.error("SamlEngine.xml: not exist."); + throw new STORKSAMLEngineException("SamlEngine.xml: not exist."); + } + + samlCore = new STORKSAMLCore(properties); + + final HashMap propertiesSign = (HashMap) instance + .get(MODULE_SIGN_CONF); + + LOG.debug("Loading Module of sign."); + signer = SignModuleFactory.getInstance(propertiesSign + .get(SAML_ENGINE_SIGN_CLASS)); + + try { + LOG.info("Initialize module of sign."); + signer.init(propertiesSign.get(SAML_ENGINE_FILE_CONF)); + LOG.info("Load cryptographic service provider of module of sign."); + signer.loadCryptServiceProvider(); + } catch (SAMLEngineException e) { + LOG.error("Error create signature module: " + + propertiesSign.get(SAML_ENGINE_FILE_CONF)); + LOG.info("Exception" + e); + throw new STORKSAMLEngineException(e); + } + } + + /** + * Gets the Signer properties. + * + * @return the SAML Sign properties + */ + protected SAMLEngineSignI getSigner() { + return signer; + } + + /** + * Gets the SAML core properties. + * + * @return the SAML core properties + */ + protected final STORKSAMLCore getSamlCoreProperties() { + return samlCore; + } + + /** + * Method that transform the received SAML object into a byte array + * representation. + * + * @param samlToken the SAML token. + * + * @return the byte[] of the SAML token. + * + * @throws SAMLEngineException the SAML engine exception + */ + private byte[] marshall(final XMLObject samlToken) + throws SAMLEngineException { + + try { + javax.xml.parsers.DocumentBuilder docBuilder = null; + + final MarshallerFactory marshallerFactory = Configuration + .getMarshallerFactory(); + + final Marshaller marshaller; + if (samlToken.getElementQName().toString().endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) + marshaller = new CustomAttributeQueryMarshaller(); + else + marshaller = marshallerFactory + .getMarshaller(samlToken); + + docBuilder = dbf.newDocumentBuilder(); + + final Document doc = docBuilder.newDocument(); + + marshaller.marshall(samlToken, doc); + + // Obtain a byte array representation of the marshalled SAML object + final DOMSource domSource = new DOMSource(doc); + final StringWriter writer = new StringWriter(); + final StreamResult result = new StreamResult(writer); + final TransformerFactory transFactory = TransformerFactory + .newInstance(); + Transformer transformer; + + transformer = transFactory.newTransformer(); + transformer.transform(domSource, result); + LOG.debug("SAML request \n"+ writer.toString()); + return writer.toString().getBytes(CHARACTER_ENCODING); + + } catch (ParserConfigurationException e) { + LOG.error("ParserConfigurationException."); + throw new SAMLEngineException(e); + } catch (MarshallingException e) { + LOG.error("MarshallingException."); + throw new SAMLEngineException(e); + } catch (TransformerConfigurationException e) { + LOG.error("TransformerConfigurationException."); + throw new SAMLEngineException(e); + } catch (TransformerException e) { + LOG.error("TransformerException."); + throw new SAMLEngineException(e); + } catch (UnsupportedEncodingException e) { + LOG.error("UnsupportedEncodingException: " + CHARACTER_ENCODING); + throw new SAMLEngineException(e); + } + } + + /** + * Method that signs a SAML Token. + * + * @param tokenSaml the token SAML + * + * @return the SAML object sign + * + * @throws SAMLEngineException the SAML engine exception + */ + private SignableSAMLObject sign(final SignableSAMLObject tokenSaml) + throws SAMLEngineException { + LOG.debug("Sign SamlToken."); + signer.sign(tokenSaml); + return tokenSaml; + } + + /** + * Sign and transform to byte array. + * + * @param samlToken the SAML token + * + * @return the byte[] of the SAML token + * + * @throws SAMLEngineException the SAML engine exception + */ + protected final byte[] signAndMarshall(final SignableSAMLObject samlToken) + throws SAMLEngineException { + LOG.debug("Marshall Saml Token."); + SignableSAMLObject signElement = sign(samlToken); + return marshall(signElement); + } + + /** + * Method that unmarshalls a SAML Object from a byte array representation to + * an XML Object. + * + * @param samlToken Byte array representation of a SAML Object + * + * @return XML Object (superclass of SAMLObject) + * + * @throws SAMLEngineException the SAML engine exception + */ + protected final XMLObject unmarshall(final byte[] samlToken) + throws SAMLEngineException { + try { + // Get parser pool manager + final BasicParserPool ppMgr = new BasicParserPool(); + // Note: this is necessary due to an unresolved Xerces deferred DOM + // issue/bug + final HashMap features = new HashMap(); + features.put(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE); + ppMgr.setBuilderFeatures(features); + + ppMgr.setNamespaceAware(true); + + // Parse SAMLToken + Document document = ppMgr.parse(new ByteArrayInputStream(samlToken)); + if (document != null){ + final Element root = document.getDocumentElement(); + // Get appropriate unmarshaller + final UnmarshallerFactory unmarshallerFact = Configuration.getUnmarshallerFactory(); + // Unmarshall using the SAML Token root element + if (unmarshallerFact != null && root != null){ + final Unmarshaller unmarshaller; + if (root.getLocalName().equals(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) + unmarshaller = new CustomAttributeQueryUnmarshaller(); + else + unmarshaller = unmarshallerFact.getUnmarshaller(root); + try { + return unmarshaller.unmarshall(root); + } catch (NullPointerException e){ + LOG.error("Error element tag incomplet or null."); + throw new SAMLEngineException("NullPointerException", e); + } + } else { + LOG.error("Error element tag incomplet or null."); + throw new SAMLEngineException("NullPointerException : unmarshallerFact or root is null"); + } + } else { + LOG.error("Error element tag incomplet or null."); + throw new SAMLEngineException("NullPointerException : document is null"); + } + } catch (XMLParserException e) { + LOG.error("XML Parsing Error.", e); + throw new SAMLEngineException(e); + } catch (UnmarshallingException e) { + LOG.error("TransformerException.", e); + throw new SAMLEngineException(e); + } catch (NullPointerException e) { + LOG.error("Error element tag incomplet or null.", e); + throw new SAMLEngineException(e); + } + } + + /** + * Method that validates an XML Signature contained in a SAML Token. + * + * @param samlToken the SAML token + * + * @return the SAML object + * + * @throws SAMLEngineException the SAML engine exception + */ + protected final SAMLObject validateSignature( + final SignableSAMLObject samlToken) throws SAMLEngineException { + + LOG.info("Validate Signature"); + signer.validateSignature(samlToken); + + return samlToken; + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java new file mode 100644 index 000000000..1efbb8b32 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/SAMLEngineUtils.java @@ -0,0 +1,833 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.commons.lang.StringUtils; +import org.joda.time.DateTime; +import org.opensaml.Configuration; +import org.opensaml.common.SAMLVersion; +import org.opensaml.common.impl.SecureRandomIdentifierGenerator; +import org.opensaml.saml2.common.Extensions; +import org.opensaml.saml2.common.impl.ExtensionsBuilder; +import org.opensaml.saml2.core.Assertion; +import org.opensaml.saml2.core.Attribute; +import org.opensaml.saml2.core.AttributeValue; +import org.opensaml.saml2.core.AuthnContext; +import org.opensaml.saml2.core.AuthnRequest; +import org.opensaml.saml2.core.AuthnStatement; +import org.opensaml.saml2.core.Issuer; +import org.opensaml.saml2.core.LogoutRequest; +import org.opensaml.saml2.core.LogoutResponse; +import org.opensaml.saml2.core.NameID; +import org.opensaml.saml2.core.Response; +import org.opensaml.saml2.core.Status; +import org.opensaml.saml2.core.StatusCode; +import org.opensaml.saml2.core.StatusMessage; +import org.opensaml.saml2.core.Subject; +import org.opensaml.saml2.core.SubjectConfirmation; +import org.opensaml.saml2.core.SubjectConfirmationData; +import org.opensaml.saml2.core.SubjectLocality; +import org.opensaml.saml2.core.impl.AssertionBuilder; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.schema.XSAny; +import org.opensaml.xml.signature.KeyInfo; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.QAAAttribute; +import eu.stork.peps.auth.engine.core.RequestedAttribute; +import eu.stork.peps.auth.engine.core.SAMLCore; +import eu.stork.peps.auth.engine.core.SPApplication; +import eu.stork.peps.auth.engine.core.SPCountry; +import eu.stork.peps.auth.engine.core.SPInstitution; +import eu.stork.peps.auth.engine.core.SPSector; +import eu.stork.peps.auth.engine.core.impl.CustomAttributeQueryBuilder; +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; + +/** + * The Class SAMLEngineUtils. + * + * @author fjquevedo + * @author iinigo + * + */ +public final class SAMLEngineUtils { + + /** The Constant UTF_8. */ + public static final String UTF_8 = "UTF-8"; + + /** The Constant SHA_512. */ + public static final String SHA_512 = "SHA-512"; + + /** The generator. */ + private static SecureRandomIdentifierGenerator generator; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(SAMLEngineUtils.class.getName()); + + /** + * Method that generates a random value according to NCName grammar. + * + * NCName ::= NCNameStartChar NCNameChar* NCNameChar ::= NameChar - ':' + * NCNameStartChar ::= Letter | '_' NameStartChar ::= ":" | [A-Z] | "_" | + * [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | + * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | + * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] + * NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | + * [#x203F-#x2040] Name ::= NameStartChar (NameChar)* Letter ::= BaseChar | + * Ideographic BaseChar ::= [#x0041-#x005A] | [#x0061-#x007A] | + * [#x00C0-#x00D6] | [#x00D8-#x00F6] | [#x00F8-#x00FF] | [#x0100-#x0131] | + * [#x0134-#x013E] | [#x0141-#x0148] | [#x014A-#x017E] | [#x0180-#x01C3] | + * [#x01CD-#x01F0] | [#x01F4-#x01F5] | [#x01FA-#x0217] | [#x0250-#x02A8] | + * [#x02BB-#x02C1] | #x0386 | [#x0388-#x038A] | #x038C | [#x038E-#x03A1] | + * [#x03A3-#x03CE] | [#x03D0-#x03D6] | #x03DA | #x03DC | #x03DE | #x03E0 | + * [#x03E2-#x03F3] | [#x0401-#x040C] | [#x040E-#x044F] | [#x0451-#x045C] | + * [#x045E-#x0481] | [#x0490-#x04C4] | [#x04C7-#x04C8] | [#x04CB-#x04CC] | + * [#x04D0-#x04EB] | [#x04EE-#x04F5] | [#x04F8-#x04F9] | [#x0531-#x0556] | + * #x0559 | [#x0561-#x0586] | [#x05D0-#x05EA] | [#x05F0-#x05F2] | + * [#x0621-#x063A] | [#x0641-#x064A] | [#x0671-#x06B7] | [#x06BA-#x06BE] | + * [#x06C0-#x06CE] | [#x06D0-#x06D3] | #x06D5 | [#x06E5-#x06E6] | + * [#x0905-#x0939] | #x093D | [#x0958-#x0961] | [#x0985-#x098C] | + * [#x098F-#x0990] | [#x0993-#x09A8] | [#x09AA-#x09B0] | #x09B2 | + * [#x09B6-#x09B9] | [#x09DC-#x09DD] | [#x09DF-#x09E1] | [#x09F0-#x09F1] | + * [#x0A05-#x0A0A] | [#x0A0F-#x0A10] | [#x0A13-#x0A28] | [#x0A2A-#x0A30] | + * [#x0A32-#x0A33] | [#x0A35-#x0A36] | [#x0A38-#x0A39] | [#x0A59-#x0A5C] | + * #x0A5E | [#x0A72-#x0A74] | [#x0A85-#x0A8B] | #x0A8D | [#x0A8F-#x0A91] | + * [#x0A93-#x0AA8] | [#x0AAA-#x0AB0] | [#x0AB2-#x0AB3] | [#x0AB5-#x0AB9] | + * #x0ABD | #x0AE0 | [#x0B05-#x0B0C] | [#x0B0F-#x0B10] | [#x0B13-#x0B28] | + * [#x0B2A-#x0B30] | [#x0B32-#x0B33] | [#x0B36-#x0B39] | #x0B3D | + * [#x0B5C-#x0B5D] | [#x0B5F-#x0B61] | [#x0B85-#x0B8A] | [#x0B8E-#x0B90] | + * [#x0B92-#x0B95] | [#x0B99-#x0B9A] | #x0B9C | [#x0B9E-#x0B9F] | + * [#x0BA3-#x0BA4] | [#x0BA8-#x0BAA] | [#x0BAE-#x0BB5] | [#x0BB7-#x0BB9] | + * [#x0C05-#x0C0C] | [#x0C0E-#x0C10] | [#x0C12-#x0C28] | [#x0C2A-#x0C33] | + * [#x0C35-#x0C39] | [#x0C60-#x0C61] | [#x0C85-#x0C8C] | [#x0C8E-#x0C90] | + * [#x0C92-#x0CA8] | [#x0CAA-#x0CB3] | [#x0CB5-#x0CB9] | #x0CDE | + * [#x0CE0-#x0CE1] | [#x0D05-#x0D0C] | [#x0D0E-#x0D10] | [#x0D12-#x0D28] | + * [#x0D2A-#x0D39] | [#x0D60-#x0D61] | [#x0E01-#x0E2E] | #x0E30 | + * [#x0E32-#x0E33] | [#x0E40-#x0E45] | [#x0E81-#x0E82] | #x0E84 | + * [#x0E87-#x0E88] | #x0E8A | #x0E8D | [#x0E94-#x0E97] | [#x0E99-#x0E9F] | + * [#x0EA1-#x0EA3] | #x0EA5 | #x0EA7 | [#x0EAA-#x0EAB] | [#x0EAD-#x0EAE] | + * #x0EB0 | [#x0EB2-#x0EB3] | #x0EBD | [#x0EC0-#x0EC4] | [#x0F40-#x0F47] | + * [#x0F49-#x0F69] | [#x10A0-#x10C5] | [#x10D0-#x10F6] | #x1100 | + * [#x1102-#x1103] | [#x1105-#x1107] | #x1109 | [#x110B-#x110C] | + * [#x110E-#x1112] | #x113C | #x113E | #x1140 | #x114C | #x114E | #x1150 | + * [#x1154-#x1155] | #x1159 | [#x115F-#x1161] | #x1163 | #x1165 | #x1167 | + * #x1169 | [#x116D-#x116E] | [#x1172-#x1173] | #x1175 | #x119E | #x11A8 | + * #x11AB | [#x11AE-#x11AF] | [#x11B7-#x11B8] | #x11BA | [#x11BC-#x11C2] | + * #x11EB | #x11F0 | #x11F9 | [#x1E00-#x1E9B] | [#x1EA0-#x1EF9] | + * [#x1F00-#x1F15] | [#x1F18-#x1F1D] | [#x1F20-#x1F45] | [#x1F48-#x1F4D] | + * [#x1F50-#x1F57] | #x1F59 | #x1F5B | #x1F5D | [#x1F5F-#x1F7D] | + * [#x1F80-#x1FB4] | [#x1FB6-#x1FBC] | #x1FBE | [#x1FC2-#x1FC4] | + * [#x1FC6-#x1FCC] | [#x1FD0-#x1FD3] | [#x1FD6-#x1FDB] | [#x1FE0-#x1FEC] | + * [#x1FF2-#x1FF4] | [#x1FF6-#x1FFC] | #x2126 | [#x212A-#x212B] | #x212E | + * [#x2180-#x2182] | [#x3041-#x3094] | [#x30A1-#x30FA] | [#x3105-#x312C] | + * [#xAC00-#xD7A3] Ideographic ::= [#x4E00-#x9FA5] | #x3007 | + * [#x3021-#x3029] + * + * @return Random ID value + */ + + //Initialization of a generator of identifiers for all token SAML. + static { + loadRandomIdentifierGenerator(); + } + + /** + * Load random identifier generator. + * + *@throws STORKSAMLEngineRuntimeException the STORKSAML engine runtime exception + */ + private static void loadRandomIdentifierGenerator() { + try { + generator = new SecureRandomIdentifierGenerator(); + } catch (NoSuchAlgorithmException ex) { + LOG.error("Error init SecureRandomIdentifierGenerator", ex); + throw new STORKSAMLEngineRuntimeException(ex); + } + + } + + /** + * Creates the SAML object. + * + * @param qname the QName + * + * @return the XML object + */ + public static XMLObject createSamlObject(final QName qname) { + if (qname.toString().endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) + { + CustomAttributeQueryBuilder builder = new CustomAttributeQueryBuilder(); + return builder.buildObject(qname); + } + else + { + return Configuration.getBuilderFactory().getBuilder(qname).buildObject( + qname); + } + } + + /** + * Creates the SAML object. + * + * @param qname the quality name + * @param qname1 the qname1 + * + * @return the xML object + */ + public static XMLObject createSamlObject(final QName qname, + final QName qname1) { + return Configuration.getBuilderFactory().getBuilder(qname1) + .buildObject(qname, qname1); + } + + /** + * Encode value with an specific algorithm. + * + * @param value the value + * @param alg the algorithm + * + * @return the string + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static String encode(final String value, final String alg) + throws STORKSAMLEngineException { + LOG.debug("Encode value with " + alg + " algorithm."); + byte[] buffer; + final StringBuffer hash = new StringBuffer(""); + try { + buffer = value.getBytes(UTF_8); + MessageDigest msgDig; + msgDig = MessageDigest.getInstance(alg); + msgDig.update(buffer); + final byte[] digest = msgDig.digest(); + final int signedByte = 0xff; + for (byte aux : digest) { + final int byt = aux & signedByte; + if (Integer.toHexString(byt).length() == 1) { + hash.append('0'); + } + hash.append(Integer.toHexString(byt)); + } + } catch (UnsupportedEncodingException e1) { + LOG.error("UnsupportedEncodingException: " + UTF_8); + throw new STORKSAMLEngineException(e1); + } catch (NoSuchAlgorithmException e) { + LOG.error("NoSuchAlgorithmException: " + alg); + throw new STORKSAMLEngineException(e); + } + return hash.toString(); + } + + /** + * Generate assertion. + * + * @param version the version + * @param identifier the identifier + * @param issueInstant the issue instant + * @param issuer the issuer + * + * @return the assertion + */ + public static Assertion generateAssertion(final SAMLVersion version, + final String identifier, final DateTime issueInstant, + final Issuer issuer) { + final AssertionBuilder assertionBuilder = new AssertionBuilder(); + final Assertion assertion = assertionBuilder.buildObject(); + assertion.setVersion(version); + assertion.setID(identifier); + assertion.setIssueInstant(issueInstant); + // + assertion.setIssuer(issuer); + return assertion; + } + + /** + * Generate authentication statement. + * + * @param authnInstant the authentication instant + * @param authnContext the authentication context + * + * @return the authentication statement + */ + public static AuthnStatement generateAthnStatement(final DateTime authnInstant, + final AuthnContext authnContext) { + // + final AuthnStatement authnStatement = (AuthnStatement) SAMLEngineUtils + .createSamlObject(AuthnStatement.DEFAULT_ELEMENT_NAME); + authnStatement.setAuthnInstant(authnInstant); + authnStatement.setAuthnContext(authnContext); + return authnStatement; + } + + /** + * Generate attribute from a list of values. + * + * @param name the name of the attribute. + * @param status the status of the parameter: "Available", "NotAvailable" or + * "Withheld". + * @param values the value of the attribute. + * @param isHashing the is hashing with "SHA-512" algorithm. + * @return the attribute + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static Attribute generateAttrComplex(final String name, + final String status, final Map values, + final boolean isHashing) throws STORKSAMLEngineException { + LOG.debug("Generate attribute complex: " + name); + final Attribute attribute = (Attribute) SAMLEngineUtils + .createSamlObject(Attribute.DEFAULT_ELEMENT_NAME); + + attribute.setName(name); + attribute.setNameFormat(Attribute.URI_REFERENCE); + attribute.getUnknownAttributes().put( + new QName(SAMLCore.STORK10_NS.getValue(), "AttributeStatus", + SAMLCore.STORK10_PREFIX.getValue()), status); + + if (!values.isEmpty()) { + LOG.debug("Add attribute values."); + // Create an attribute that contains all XSAny elements. + final XSAny attrValue = (XSAny) SAMLEngineUtils.createSamlObject( + AttributeValue.DEFAULT_ELEMENT_NAME, XSAny.TYPE_NAME); + final Iterator> iterator = values.entrySet() + .iterator(); + while (iterator.hasNext()) { + final Map.Entry pairs = iterator.next(); + final String value = pairs.getValue(); + + if (StringUtils.isNotBlank(value)) { + // Create the attribute statement + final XSAny attrValueSimple = (XSAny) SAMLEngineUtils + .createSamlObject(new QName(SAMLCore.STORK10_NS.getValue(), + pairs.getKey().toString(), + SAMLCore.STORK10_PREFIX.getValue()), XSAny.TYPE_NAME); + // if it's necessary encode the information. + if (isHashing) { + attrValueSimple + .setTextContent(encode(value, SHA_512)); + } else { + attrValueSimple.setTextContent(value); + } + attrValue.getUnknownXMLObjects().add(attrValueSimple); + attribute.getAttributeValues().add(attrValue); + } + } + + } + return attribute; + } + + /** + * Generate extension. + * + * @return the extensions + */ + public static Extensions generateExtension() { + final ExtensionsBuilder extensionsBuilder = new ExtensionsBuilder(); + return extensionsBuilder.buildObject( + "urn:oasis:names:tc:SAML:2.0:protocol", "Extensions", "saml2p"); + } + + /** + * Generate issuer. + * + * @return the issuer + */ + public static Issuer generateIssuer() { + return (Issuer) SAMLEngineUtils + .createSamlObject(Issuer.DEFAULT_ELEMENT_NAME); + } + + /** + * Generate key info. + * + * @return the key info + */ + public static KeyInfo generateKeyInfo() { + return (KeyInfo) SAMLEngineUtils + .createSamlObject(KeyInfo.DEFAULT_ELEMENT_NAME); + } + + /** + * Generate name id. + * + * @return the name id + */ + public static NameID generateNameID() { + return (NameID) SAMLEngineUtils + .createSamlObject(NameID.DEFAULT_ELEMENT_NAME); + } + + /** + * Generate name id. + * + * @param nameQualifier the name qualifier + * @param format the format + * @param spNameQualifier the sP name qualifier + * + * @return the name id + */ + public static NameID generateNameID(final String nameQualifier, + final String format, final String spNameQualifier) { + // + final NameID nameId = (NameID) Configuration.getBuilderFactory() + .getBuilder(NameID.DEFAULT_ELEMENT_NAME).buildObject( + NameID.DEFAULT_ELEMENT_NAME); + // optional + nameId.setNameQualifier(nameQualifier); + // optional + nameId.setFormat(format); + // optional + nameId.setSPNameQualifier(spNameQualifier); + return nameId; + } + + /** + * Generate NCName. + * + * @return the string + */ + public static String generateNCName() { + return generator.generateIdentifier(); + } + + /** + * Generate the quality authentication assurance level. + * + * @param qaal the level of quality authentication assurance. + * + * @return the quality authentication assurance attribute + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static QAAAttribute generateQAAAttribute(final int qaal) + throws STORKSAMLEngineException { + LOG.debug("Generate QAAAttribute."); + + final QAAAttribute qaaAttribute = (QAAAttribute) SAMLEngineUtils + .createSamlObject(QAAAttribute.DEF_ELEMENT_NAME); + qaaAttribute.setQaaLevel(String.valueOf(qaal)); + return qaaAttribute; + } + + /** + * Generate requested attribute. + * + * @param name the name + * @param friendlyName the friendly name + * @param isRequired the is required + * @param value the value + * + * @return the requested attribute + */ + public static RequestedAttribute generateReqAuthnAttributeSimple( + final String name, final String friendlyName, + final String isRequired, final List value) { + LOG.debug("Generate the requested attribute."); + + final RequestedAttribute requested = (RequestedAttribute) SAMLEngineUtils + .createSamlObject(RequestedAttribute.DEF_ELEMENT_NAME); + requested.setName(name); + requested.setNameFormat(RequestedAttribute.URI_REFERENCE); + + requested.setFriendlyName(friendlyName); + + requested.setIsRequired(isRequired); + + // The value is optional in an authentication request. + if (!value.isEmpty()) { + for (int nextValue = 0; nextValue < value.size(); nextValue++) { + final String valor = value.get(nextValue); + if (StringUtils.isNotBlank(valor)) { + + if(!name.equals("http://www.stork.gov.eu/1.0/signedDoc")){ + + // Create the attribute statement + final XSAny attrValue = (XSAny) SAMLEngineUtils + .createSamlObject( + new QName(SAMLCore.STORK10_NS.getValue(), + "AttributeValue", + SAMLCore.STORK10_PREFIX.getValue()), + XSAny.TYPE_NAME); + + attrValue.setTextContent(valor.trim()); + requested.getAttributeValues().add(attrValue); + + }else{ + + DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); + domFactory.setNamespaceAware(true); + Document document = null; + DocumentBuilder builder; + + // Parse the signedDoc value into an XML DOM Document + try { + builder = domFactory.newDocumentBuilder(); + InputStream is; + is = new ByteArrayInputStream(valor.trim().getBytes(UTF_8)); + document = builder.parse(is); + is.close(); + } catch (SAXException e1) { + LOG.error("SAX Error while parsing signModule attribute", e1); + throw new STORKSAMLEngineRuntimeException(e1); + } catch (ParserConfigurationException e2) { + LOG.error("Parser Configuration Error while parsing signModule attribute", e2); + throw new STORKSAMLEngineRuntimeException(e2); + } catch (UnsupportedEncodingException e3) { + LOG.error("Unsupported encoding Error while parsing signModule attribute", e3); + throw new STORKSAMLEngineRuntimeException(e3); + } catch (IOException e4) { + LOG.error("IO Error while parsing signModule attribute", e4); + throw new STORKSAMLEngineRuntimeException(e4); + } + + // Create the XML statement(this will be overwritten with the previous DOM structure) + final XSAny xmlValue = (XSAny) SAMLEngineUtils + .createSamlObject( + new QName(SAMLCore.STORK10_NS.getValue(), + "XMLValue", + SAMLCore.STORK10_PREFIX.getValue()), + XSAny.TYPE_NAME); + + //Set the signedDoc XML content to this element + xmlValue.setDOM(document.getDocumentElement()); + + // Create the attribute statement + final XSAny attrValue = (XSAny) SAMLEngineUtils + .createSamlObject( + new QName(SAMLCore.STORK10_NS.getValue(), + "AttributeValue", + SAMLCore.STORK10_PREFIX.getValue()), + XSAny.TYPE_NAME); + + //Add previous signedDocXML to the AttributeValue Element + attrValue.getUnknownXMLObjects().add(xmlValue); + + requested.getAttributeValues().add(attrValue); + } + + + } + } + } + + return requested; + } + + /** + * Generate response. + * + * @param version the version + * @param identifier the identifier + * @param issueInstant the issue instant + * @param status the status + * + * @return the response + */ + public static Response generateResponse(final SAMLVersion version, + final String identifier, final DateTime issueInstant, + final Status status) { + final Response response = (Response) SAMLEngineUtils + .createSamlObject(Response.DEFAULT_ELEMENT_NAME); + response.setID(identifier); + response.setIssueInstant(issueInstant); + response.setStatus(status); + return response; + } + + /** + * Method that generates a SAML Authentication Request basing on the + * provided information. + * + * @param identifier the identifier + * @param version the version + * @param issueInstant the issue instant + * + * @return the authentication request + */ + public static AuthnRequest generateSAMLAuthnRequest(final String identifier, + final SAMLVersion version, final DateTime issueInstant) { + LOG.debug("Generate basic authentication request."); + final AuthnRequest authnRequest = (AuthnRequest) SAMLEngineUtils + .createSamlObject(AuthnRequest.DEFAULT_ELEMENT_NAME); + + authnRequest.setID(identifier); + authnRequest.setVersion(version); + authnRequest.setIssueInstant(issueInstant); + return authnRequest; + } + + public static CustomAttributeQuery generateSAMLAttrQueryRequest(final String identifier, + final SAMLVersion version, final DateTime issueInstant) { + LOG.debug("Generate attribute query request."); + final CustomAttributeQuery attrQueryRequest = (CustomAttributeQuery) SAMLEngineUtils + .createSamlObject(CustomAttributeQuery.DEFAULT_ELEMENT_NAME); + + attrQueryRequest.setID(identifier); + attrQueryRequest.setVersion(version); + attrQueryRequest.setIssueInstant(issueInstant); + return attrQueryRequest; + } + + public static LogoutRequest generateSAMLLogoutRequest(final String identifier, + final SAMLVersion version, final DateTime issueInstant) { + LOG.debug("Generate logout request."); + final LogoutRequest logoutRequest = (LogoutRequest)SAMLEngineUtils. + createSamlObject(LogoutRequest.DEFAULT_ELEMENT_NAME); + + + logoutRequest.setID(identifier); + logoutRequest.setVersion(version); + logoutRequest.setIssueInstant(issueInstant); + return logoutRequest; + } + + public static LogoutResponse generateSAMLLogoutResponse(final String identifier, + final SAMLVersion version, final DateTime issueInstant, + final Status status, final String inResponseTo) { + LOG.debug("Generate logout response."); + final LogoutResponse logoutResponse = (LogoutResponse)SAMLEngineUtils. + createSamlObject(LogoutResponse.DEFAULT_ELEMENT_NAME); + + logoutResponse.setInResponseTo(inResponseTo); + logoutResponse.setStatus(status); + logoutResponse.setID(identifier); + logoutResponse.setVersion(version); + logoutResponse.setIssueInstant(issueInstant); + return logoutResponse; + } + + /** + * Generate service provider application. + * + * @param spApplication the service provider application + * + * @return the sP application + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static SPApplication generateSPApplication(final String spApplication) + throws STORKSAMLEngineException { + LOG.debug("Generate SPApplication."); + + final SPApplication applicationAttr = (SPApplication) SAMLEngineUtils + .createSamlObject(SPApplication.DEF_ELEMENT_NAME); + applicationAttr.setSPApplication(spApplication); + return applicationAttr; + } + + /** + * Generate service provider country. + * + * @param spCountry the service provider country + * + * @return the service provider country + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static SPCountry generateSPCountry(final String spCountry) + throws STORKSAMLEngineException { + LOG.debug("Generate SPApplication."); + + final SPCountry countryAttribute = (SPCountry) SAMLEngineUtils + .createSamlObject(SPCountry.DEF_ELEMENT_NAME); + countryAttribute.setSPCountry(spCountry); + return countryAttribute; + } + + /** + * Generate service provider institution. + * + * @param spInstitution the service provider institution + * + * @return the service provider institution + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static SPInstitution generateSPInstitution(final String spInstitution) + throws STORKSAMLEngineException { + LOG.debug("Generate SPInstitution."); + + final SPInstitution institutionAttr = (SPInstitution) SAMLEngineUtils + .createSamlObject(SPInstitution.DEF_ELEMENT_NAME); + institutionAttr.setSPInstitution(spInstitution); + return institutionAttr; + } + + /** + * Generate service provider sector. + * + * @param spSector the service provider sector + * + * @return the service provider sector + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static SPSector generateSPSector(final String spSector) + throws STORKSAMLEngineException { + LOG.debug("Generate SPSector."); + + final SPSector sectorAttribute = (SPSector) SAMLEngineUtils + .createSamlObject(SPSector.DEF_ELEMENT_NAME); + sectorAttribute.setSPSector(spSector); + return sectorAttribute; + } + + /** + * Generate status. + * + * @param statusCode the status code + * + * @return the status + */ + public static Status generateStatus(final StatusCode statusCode) { + final Status status = (Status) SAMLEngineUtils + .createSamlObject(Status.DEFAULT_ELEMENT_NAME); + status.setStatusCode(statusCode); + return status; + } + + /** + * Generate status code. + * + * @param value the value + * + * @return the status code + */ + public static StatusCode generateStatusCode(final String value) { + final StatusCode statusCode = (StatusCode) SAMLEngineUtils + .createSamlObject(StatusCode.DEFAULT_ELEMENT_NAME); + statusCode.setValue(value); + return statusCode; + } + + /** + * Generate status message. + * + * @param message the message + * + * @return the status message + */ + public static StatusMessage generateStatusMessage(final String message) { + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .createSamlObject(StatusMessage.DEFAULT_ELEMENT_NAME); + statusMessage.setMessage(message); + return statusMessage; + } + + /** + * Generate subject. + * + * @return the subject + */ + public static Subject generateSubject() { + return (Subject) SAMLEngineUtils + .createSamlObject(Subject.DEFAULT_ELEMENT_NAME); + } + + /** + * Generate subject confirmation. + * + * @param method the method + * @param data the data + * + * @return the subject confirmation + */ + public static SubjectConfirmation generateSubjectConfirmation( + final String method, final SubjectConfirmationData data) { + final SubjectConfirmation subjectConf = (SubjectConfirmation) Configuration + .getBuilderFactory().getBuilder( + SubjectConfirmation.DEFAULT_ELEMENT_NAME).buildObject( + SubjectConfirmation.DEFAULT_ELEMENT_NAME); + + subjectConf.setMethod(method); + + subjectConf.setSubjectConfirmationData(data); + + return subjectConf; + } + + /** + * Generate subject confirmation data. + * + * @param notOnOrAfter the not on or after + * @param recipient the recipient + * @param inResponseTo the in response to + * + * @return the subject confirmation data + */ + public static SubjectConfirmationData generateSubjectConfirmationData( + final DateTime notOnOrAfter, final String recipient, + final String inResponseTo) { + final SubjectConfirmationData subjectConfData = (SubjectConfirmationData) SAMLEngineUtils + .createSamlObject(SubjectConfirmationData.DEFAULT_ELEMENT_NAME); + subjectConfData.setNotOnOrAfter(notOnOrAfter); + subjectConfData.setRecipient(recipient); + subjectConfData.setInResponseTo(inResponseTo); + return subjectConfData; + } + + /** + * Generate subject locality. + * + * @param address the address + * + * @return the subject locality + */ + public static SubjectLocality generateSubjectLocality(final String address) { + final SubjectLocality subjectLocality = (SubjectLocality) SAMLEngineUtils + .createSamlObject(SubjectLocality.DEFAULT_ELEMENT_NAME); + subjectLocality.setAddress(address); + return subjectLocality; + } + + /** + * Method that returns the current time. + * + * @return the current time + */ + public static DateTime getCurrentTime() { + return new DateTime(); + } + + /** + * Instantiates a new SAML engine utilities. + */ + private SAMLEngineUtils() { + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java new file mode 100644 index 000000000..6bdf7b320 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/STORKSAMLEngine.java @@ -0,0 +1,3744 @@ +/* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; +import java.io.UnsupportedEncodingException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import javax.xml.namespace.QName; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerConfigurationException; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.commons.lang.StringUtils; +import org.bouncycastle.jce.X509Principal; +import org.joda.time.DateTime; +import org.opensaml.Configuration; +import org.opensaml.common.SAMLVersion; +import org.opensaml.common.SignableSAMLObject; +import org.opensaml.common.xml.SAMLConstants; +import org.opensaml.saml2.common.Extensions; +import org.opensaml.saml2.core.Assertion; +import org.opensaml.saml2.core.Attribute; +import org.opensaml.saml2.core.AttributeStatement; +import org.opensaml.saml2.core.AttributeValue; +import org.opensaml.saml2.core.Audience; +import org.opensaml.saml2.core.AudienceRestriction; +import org.opensaml.saml2.core.AuthnContext; +import org.opensaml.saml2.core.AuthnContextDecl; +import org.opensaml.saml2.core.AuthnRequest; +import org.opensaml.saml2.core.AuthnStatement; +import org.opensaml.saml2.core.Conditions; +import org.opensaml.saml2.core.Issuer; +import org.opensaml.saml2.core.LogoutRequest; +import org.opensaml.saml2.core.LogoutResponse; +import org.opensaml.saml2.core.NameID; +import org.opensaml.saml2.core.OneTimeUse; +import org.opensaml.saml2.core.Response; +import org.opensaml.saml2.core.Status; +import org.opensaml.saml2.core.StatusCode; +import org.opensaml.saml2.core.StatusMessage; +import org.opensaml.saml2.core.Subject; +import org.opensaml.saml2.core.SubjectConfirmation; +import org.opensaml.saml2.core.SubjectConfirmationData; +import org.opensaml.saml2.core.SubjectLocality; +import org.opensaml.saml2.core.impl.SubjectConfirmationBuilder; +import org.opensaml.xml.Namespace; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.schema.XSAny; +import org.opensaml.xml.schema.impl.XSAnyBuilder; +import org.opensaml.xml.schema.impl.XSAnyImpl; +import org.opensaml.xml.schema.impl.XSAnyMarshaller; +import org.opensaml.xml.schema.impl.XSAnyUnmarshaller; +import org.opensaml.xml.schema.impl.XSStringImpl; +import org.opensaml.xml.signature.KeyInfo; +import org.opensaml.xml.util.Base64; +import org.opensaml.xml.validation.ValidationException; +import org.opensaml.xml.validation.Validator; +import org.opensaml.xml.validation.ValidatorSuite; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.xml.sax.SAXException; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAttrQueryRequest; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.commons.STORKAuthnRequest; +import eu.stork.peps.auth.commons.STORKAuthnResponse; +import eu.stork.peps.auth.commons.STORKLogoutRequest; +import eu.stork.peps.auth.commons.STORKLogoutResponse; +import eu.stork.peps.auth.engine.core.AuthenticationAttributes; +import eu.stork.peps.auth.engine.core.CitizenCountryCode; +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.CustomRequestAbstractType; +import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; +import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; +import eu.stork.peps.auth.engine.core.EIDSectorShare; +import eu.stork.peps.auth.engine.core.QAAAttribute; +import eu.stork.peps.auth.engine.core.RequestedAttribute; +import eu.stork.peps.auth.engine.core.RequestedAttributes; +import eu.stork.peps.auth.engine.core.SAMLCore; +import eu.stork.peps.auth.engine.core.SPApplication; +import eu.stork.peps.auth.engine.core.SPCountry; +import eu.stork.peps.auth.engine.core.SPID; +import eu.stork.peps.auth.engine.core.SPInformation; +import eu.stork.peps.auth.engine.core.SPInstitution; +import eu.stork.peps.auth.engine.core.SPSector; +import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; +import eu.stork.peps.auth.engine.core.impl.AuthenticationAttributesBuilder; +import eu.stork.peps.auth.engine.core.impl.AuthenticationAttributesMarshaller; +import eu.stork.peps.auth.engine.core.impl.AuthenticationAttributesUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.CitizenCountryCodeBuilder; +import eu.stork.peps.auth.engine.core.impl.CitizenCountryCodeMarshaller; +import eu.stork.peps.auth.engine.core.impl.CitizenCountryCodeUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.EIDCrossBorderShareBuilder; +import eu.stork.peps.auth.engine.core.impl.EIDCrossBorderShareMarshaller; +import eu.stork.peps.auth.engine.core.impl.EIDCrossBorderShareUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.EIDCrossSectorShareBuilder; +import eu.stork.peps.auth.engine.core.impl.EIDCrossSectorShareMarshaller; +import eu.stork.peps.auth.engine.core.impl.EIDCrossSectorShareUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.EIDSectorShareBuilder; +import eu.stork.peps.auth.engine.core.impl.EIDSectorShareMarshaller; +import eu.stork.peps.auth.engine.core.impl.EIDSectorShareUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.QAAAttributeBuilder; +import eu.stork.peps.auth.engine.core.impl.QAAAttributeMarshaller; +import eu.stork.peps.auth.engine.core.impl.QAAAttributeUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.RequestedAttributeBuilder; +import eu.stork.peps.auth.engine.core.impl.RequestedAttributeMarshaller; +import eu.stork.peps.auth.engine.core.impl.RequestedAttributeUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.RequestedAttributesBuilder; +import eu.stork.peps.auth.engine.core.impl.RequestedAttributesMarshaller; +import eu.stork.peps.auth.engine.core.impl.RequestedAttributesUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SPApplicationBuilder; +import eu.stork.peps.auth.engine.core.impl.SPApplicationMarshaller; +import eu.stork.peps.auth.engine.core.impl.SPApplicationUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SPCountryBuilder; +import eu.stork.peps.auth.engine.core.impl.SPCountryMarshaller; +import eu.stork.peps.auth.engine.core.impl.SPCountryUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SPIDBuilder; +import eu.stork.peps.auth.engine.core.impl.SPIDMarshaller; +import eu.stork.peps.auth.engine.core.impl.SPIDUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SPInformationBuilder; +import eu.stork.peps.auth.engine.core.impl.SPInformationMarshaller; +import eu.stork.peps.auth.engine.core.impl.SPInformationUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SPInstitutionBuilder; +import eu.stork.peps.auth.engine.core.impl.SPInstitutionMarshaller; +import eu.stork.peps.auth.engine.core.impl.SPInstitutionUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.SPSectorBuilder; +import eu.stork.peps.auth.engine.core.impl.SPSectorMarshaller; +import eu.stork.peps.auth.engine.core.impl.SPSectorUnmarshaller; +import eu.stork.peps.auth.engine.core.impl.VIDPAuthenticationAttributesBuilder; +import eu.stork.peps.auth.engine.core.impl.VIDPAuthenticationAttributesMarshaller; +import eu.stork.peps.auth.engine.core.impl.VIDPAuthenticationAttributesUnmarshaller; +import eu.stork.peps.auth.engine.core.validator.CustomAttributeQueryValidator; +import eu.stork.peps.auth.engine.core.validator.ExtensionsSchemaValidator; +import eu.stork.peps.auth.engine.core.validator.MultipleAssertionResponseValidator; +import eu.stork.peps.auth.engine.core.validator.QAAAttributeSchemaValidator; +import eu.stork.peps.exceptions.SAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; + +/** + * Class that wraps the operations over SAML tokens, both generation and + * validation of SAML STORK requests and SAML STORK responses. Complaint with + * "OASIS Secure Assertion Markup Language (SAML) 2.0, May 2005", but taking + * into account STORK specific requirements. + * + * @author fjquevedo + * @author iinigo + */ +public final class STORKSAMLEngine extends SAMLEngine { + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(STORKSAMLEngine.class.getName()); + + private static final String ATTRIBUTE_EMPTY_LITERAL = "Attribute name is null or empty."; + /** + * Gets the single instance of STORKSAMLEngine. + * + * @param nameInstance the name instance + * + * @return single instance of STORKSAMLEngine + */ + public static synchronized STORKSAMLEngine getInstance( + final String nameInstance) { + STORKSAMLEngine engine = null; + LOG.info("Get instance: " + nameInstance); + try { + engine = new STORKSAMLEngine(nameInstance.trim()); + } catch (Exception e) { + LOG.error("Error getting instance: " + nameInstance); + e.printStackTrace(); + } + return engine; + } + + /** + * Instantiate a new STORKSAML engine. + * + * @param nameInstance the name instance + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private STORKSAMLEngine(final String nameInstance) + throws STORKSAMLEngineException { + // Initialization OpenSAML. + super(nameInstance); + LOG.info("Register STORK objects provider."); + Configuration.registerObjectProvider(QAAAttribute.DEF_ELEMENT_NAME, + new QAAAttributeBuilder(), new QAAAttributeMarshaller(), + new QAAAttributeUnmarshaller()); + + Configuration.registerObjectProvider(EIDSectorShare.DEF_ELEMENT_NAME, + new EIDSectorShareBuilder(), new EIDSectorShareMarshaller(), + new EIDSectorShareUnmarshaller()); + + Configuration.registerObjectProvider( + EIDCrossSectorShare.DEF_ELEMENT_NAME, + new EIDCrossSectorShareBuilder(), + new EIDCrossSectorShareMarshaller(), + new EIDCrossSectorShareUnmarshaller()); + + Configuration.registerObjectProvider( + EIDCrossBorderShare.DEF_ELEMENT_NAME, + new EIDCrossBorderShareBuilder(), + new EIDCrossBorderShareMarshaller(), + new EIDCrossBorderShareUnmarshaller()); + + Configuration.registerObjectProvider(SPSector.DEF_ELEMENT_NAME, + new SPSectorBuilder(), new SPSectorMarshaller(), + new SPSectorUnmarshaller()); + + Configuration.registerObjectProvider(SPInstitution.DEF_ELEMENT_NAME, + new SPInstitutionBuilder(), new SPInstitutionMarshaller(), + new SPInstitutionUnmarshaller()); + + Configuration.registerObjectProvider(SPApplication.DEF_ELEMENT_NAME, + new SPApplicationBuilder(), new SPApplicationMarshaller(), + new SPApplicationUnmarshaller()); + + Configuration.registerObjectProvider(SPCountry.DEF_ELEMENT_NAME, + new SPCountryBuilder(), new SPCountryMarshaller(), + new SPCountryUnmarshaller()); + + Configuration.registerObjectProvider(XSAny.TYPE_NAME, + new XSAnyBuilder(), new XSAnyMarshaller(), + new XSAnyUnmarshaller()); + + Configuration.registerObjectProvider( + RequestedAttribute.DEF_ELEMENT_NAME, + new RequestedAttributeBuilder(), + new RequestedAttributeMarshaller(), + new RequestedAttributeUnmarshaller()); + + Configuration.registerObjectProvider( + RequestedAttributes.DEF_ELEMENT_NAME, + new RequestedAttributesBuilder(), + new RequestedAttributesMarshaller(), + new RequestedAttributesUnmarshaller()); + + Configuration.registerObjectProvider( + AuthenticationAttributes.DEF_ELEMENT_NAME, + new AuthenticationAttributesBuilder(), + new AuthenticationAttributesMarshaller(), + new AuthenticationAttributesUnmarshaller()); + + Configuration.registerObjectProvider( + VIDPAuthenticationAttributes.DEF_ELEMENT_NAME, + new VIDPAuthenticationAttributesBuilder(), + new VIDPAuthenticationAttributesMarshaller(), + new VIDPAuthenticationAttributesUnmarshaller()); + + Configuration.registerObjectProvider( + CitizenCountryCode.DEF_ELEMENT_NAME, + new CitizenCountryCodeBuilder(), + new CitizenCountryCodeMarshaller(), + new CitizenCountryCodeUnmarshaller()); + + Configuration.registerObjectProvider( + SPID.DEF_ELEMENT_NAME, + new SPIDBuilder(), + new SPIDMarshaller(), + new SPIDUnmarshaller()); + + Configuration.registerObjectProvider( + SPInformation.DEF_ELEMENT_NAME, + new SPInformationBuilder(), + new SPInformationMarshaller(), + new SPInformationUnmarshaller()); + + LOG.info("Register STORK object validators."); + final ValidatorSuite validatorSuite = new ValidatorSuite( + QAAAttribute.DEF_LOCAL_NAME); + + validatorSuite.registerValidator(QAAAttribute.DEF_ELEMENT_NAME, + new QAAAttributeSchemaValidator()); + final Extensions extensions = SAMLEngineUtils.generateExtension(); + validatorSuite.registerValidator(extensions.getElementQName(), + new ExtensionsSchemaValidator()); + + Configuration.registerValidatorSuite( + "stork:QualityAuthenticationAssuranceLevel", validatorSuite); + + } + + /** + * Generate authentication response base. + * + * @param status the status + * @param assertConsumerURL the assert consumer URL. + * @param inResponseTo the in response to + * + * @return the response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Response genAuthnRespBase(final Status status, + final String assertConsumerURL, final String inResponseTo) + throws STORKSAMLEngineException { + LOG.debug("Generate Authentication Response base."); + final Response response = SAMLEngineUtils.generateResponse( + SAMLVersion.VERSION_20, SAMLEngineUtils.generateNCName(), + SAMLEngineUtils.getCurrentTime(), status); + + // Set name Spaces + this.setNameSpaces(response); + + // Mandatory STORK + LOG.debug("Generate Issuer"); + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + issuer.setValue(super.getSamlCoreProperties().getResponder()); + + // Format Entity Optional STORK + issuer.setFormat(super.getSamlCoreProperties().getFormatEntity()); + + response.setIssuer(issuer); + + // destination Mandatory Stork + response.setDestination(assertConsumerURL.trim()); + + // inResponseTo Mandatory Stork + response.setInResponseTo(inResponseTo.trim()); + + // Optional STORK + response.setConsent(super.getSamlCoreProperties() + .getConsentAuthnResponse()); + + return response; + } + + /** + * Generate attribute query response base. + * + * @param status the status + * @param destinationURL the assert consumer URL. + * @param inResponseTo the in response to + * + * @return the response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Response genAttrQueryRespBase(final Status status, + final String destinationURL, final String inResponseTo) + throws STORKSAMLEngineException { + LOG.debug("Generate Attribute query Response base."); + final Response response = SAMLEngineUtils.generateResponse( + SAMLVersion.VERSION_20, SAMLEngineUtils.generateNCName(), + SAMLEngineUtils.getCurrentTime(), status); + + // Set name Spaces + this.setNameSpaces(response); + + // Mandatory STORK + LOG.debug("Generate Issuer"); + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + issuer.setValue(super.getSamlCoreProperties().getResponder()); + + // Format Entity Optional STORK + issuer.setFormat(super.getSamlCoreProperties().getFormatEntity()); + + response.setIssuer(issuer); + + // destination Mandatory Stork + response.setDestination(destinationURL.trim()); + + // inResponseTo Mandatory Stork + response.setInResponseTo(inResponseTo.trim()); + + // Optional STORK + response.setConsent(super.getSamlCoreProperties() + .getConsentAuthnResponse()); + + return response; + } + + /** + * Generate assertion. + * + * @param ipAddress the IP address. + * @param assertConsumerURL the assert consumer URL. + * @param inResponseTo the in response to + * @param issuer the issuer + * @param notOnOrAfter the not on or after + * + * @return the assertion + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Assertion generateAssertion(final String ipAddress, + final String assertConsumerURL, final String inResponseTo, + final String issuer, final DateTime notOnOrAfter) + throws STORKSAMLEngineException { + LOG.info("Generate Assertion."); + + // Mandatory STORK + LOG.debug("Generate Issuer to Assertion"); + final Issuer issuerAssertion = SAMLEngineUtils.generateIssuer(); + issuerAssertion.setValue(super.getSamlCoreProperties().getResponder()); + + // Format Entity Optional STORK + issuerAssertion.setFormat(super.getSamlCoreProperties() + .getFormatEntity()); + + final Assertion assertion = SAMLEngineUtils.generateAssertion( + SAMLVersion.VERSION_20, SAMLEngineUtils.generateNCName(), + SAMLEngineUtils.getCurrentTime(), issuerAssertion); + + final Subject subject = SAMLEngineUtils.generateSubject(); + + // Mandatory STORK verified + // String format = NameID.UNSPECIFIED + // specification: 'SAML:2.0' exist + // opensaml: "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" + // opensaml "urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" + final String format = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; + + final String nameQualifier = ""; + + LOG.debug("Generate NameID"); + final NameID nameId = SAMLEngineUtils.generateNameID(super + .getSamlCoreProperties().getResponder(), format, nameQualifier); + nameId.setValue(format); + subject.setNameID(nameId); + + // Mandatory if urn:oasis:names:tc:SAML:2.0:cm:bearer. + // Optional in other case. + LOG.debug("Generate SubjectConfirmationData."); + final SubjectConfirmationData dataBearer = SAMLEngineUtils + .generateSubjectConfirmationData(SAMLEngineUtils + .getCurrentTime(), assertConsumerURL, inResponseTo); + + // Mandatory if urn:oasis:names:tc:SAML:2.0:cm:bearer. + // Optional in other case. + LOG.debug("Generate SubjectConfirmation"); + final SubjectConfirmation subjectConf = SAMLEngineUtils + .generateSubjectConfirmation(SubjectConfirmation.METHOD_BEARER, + dataBearer); + + final ArrayList listSubjectConf = new ArrayList(); + listSubjectConf.add(subjectConf); + + for (final Iterator iter = listSubjectConf + .iterator(); iter.hasNext();) { + final SubjectConfirmation element = iter.next(); + + if (SubjectConfirmation.METHOD_BEARER.equals(element.getMethod())) { + // ipAddress Mandatory if method is Bearer. + + if (StringUtils.isBlank(ipAddress)) { + throw new STORKSAMLEngineException( + "ipAddress is null or empty"); + } + element.getSubjectConfirmationData().setAddress( + ipAddress.trim()); + } + + element.getSubjectConfirmationData() + .setRecipient(assertConsumerURL); + element.getSubjectConfirmationData().setNotOnOrAfter(notOnOrAfter); + } + + // The SAML 2.0 specification allows multiple SubjectConfirmations + subject.getSubjectConfirmations().addAll(listSubjectConf); + + // Mandatory Stork + assertion.setSubject(subject); + + // Conditions that MUST be evaluated when assessing the validity of + // and/or when using the assertion. + final Conditions conditions = this.generateConditions(SAMLEngineUtils + .getCurrentTime(), notOnOrAfter, issuer); + + assertion.setConditions(conditions); + + LOG.debug("Generate stork Authentication Statement."); + final AuthnStatement storkAuthnStat = this + .generateStorkAuthStatement(ipAddress); + assertion.getAuthnStatements().add(storkAuthnStat); + + return assertion; + } + + private String getAttributeName(final PersonalAttribute attribute) throws STORKSAMLEngineException { + if (StringUtils.isBlank(attribute.getName())) { + LOG.error(ATTRIBUTE_EMPTY_LITERAL); + throw new STORKSAMLEngineException(ATTRIBUTE_EMPTY_LITERAL); + } + + final String attributeName = super.getSamlCoreProperties() + .getProperty(attribute.getName()); + + if (StringUtils.isBlank(attributeName)) { + LOG.error("Attribute name: {} it is not known.", attribute + .getName()); + throw new STORKSAMLEngineException("Attribute name: " + + attribute.getName() + " it is not known."); + } + return attributeName; + } + /** + * Generate attribute statement. + * + * @param personalAttrList the personal attribute list + * @param isHashing the is hashing + * + * @return the attribute statement + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + * @throws IOException + */ + private AttributeStatement generateAttributeStatement( + final IPersonalAttributeList personalAttrList, + final boolean isHashing) throws STORKSAMLEngineException { + LOG.debug("Generate attribute statement"); + + final AttributeStatement attrStatement = (AttributeStatement) SAMLEngineUtils + .createSamlObject(AttributeStatement.DEFAULT_ELEMENT_NAME); + + for (PersonalAttribute attribute : personalAttrList) { + + String attributeName = getAttributeName(attribute); + + // Verification that only one value it's permitted, simple or + // complex, not both. + + final boolean simpleNull = (attribute.getValue() == null); + final boolean simpleEmpty = (simpleNull || (!simpleNull && attribute + .getValue().isEmpty())); + + final boolean complexNull = (attribute.getComplexValue() == null); + final boolean complexEmpty = (complexNull || (!complexNull && attribute + .getComplexValue().isEmpty())); + + if ((!simpleEmpty && !complexEmpty)) { + throw new STORKSAMLEngineException( + "Attribute name: " + + attribute.getName() + + " must be contain one value, simple or complex value."); + } else { + + if (!simpleEmpty) { + attrStatement.getAttributes().add( + this.generateAttrSimple(attributeName, attribute + .getStatus(), attribute.getValue(), + isHashing)); + } else if (!complexEmpty) { + attrStatement.getAttributes().add( + SAMLEngineUtils.generateAttrComplex(attributeName, + attribute.getStatus(), attribute + .getComplexValue(), isHashing)); + } else if (!simpleNull) { + attrStatement.getAttributes().add( + this.generateAttrSimple(attributeName, attribute + .getStatus(), new ArrayList(), + isHashing)); + } else { + // Add attribute complex. + attrStatement.getAttributes().add( + SAMLEngineUtils.generateAttrComplex(attributeName, + attribute.getStatus(), + new HashMap(), isHashing)); + } + } + } + return attrStatement; + } + private XSAny createAttributeValueForSignedDoc(final String value, final boolean isHashing) throws STORKSAMLEngineException { + DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); + domFactory.setNamespaceAware(true); + Document document = null; + DocumentBuilder builder; + + // Parse the signedDoc value into an XML DOM Document + try { + builder = domFactory.newDocumentBuilder(); + InputStream is; + is = new ByteArrayInputStream(value.trim().getBytes("UTF-8")); + document = builder.parse(is); + is.close(); + } catch (SAXException e1) { + LOG.error("SAX Error while parsing signModule attribute", e1); + throw new STORKSAMLEngineRuntimeException(e1); + } catch (ParserConfigurationException e2) { + LOG.error("Parser Configuration Error while parsing signModule attribute", e2); + throw new STORKSAMLEngineRuntimeException(e2); + } catch (UnsupportedEncodingException e3) { + LOG.error("Unsupported encoding Error while parsing signModule attribute", e3); + throw new STORKSAMLEngineRuntimeException(e3); + } catch (IOException e4) { + LOG.error("IO Error while parsing signModule attribute", e4); + throw new STORKSAMLEngineRuntimeException(e4); + } + + // Create the attribute statement + final XSAny xmlValue = (XSAny) SAMLEngineUtils + .createSamlObject( + AttributeValue.DEFAULT_ELEMENT_NAME, + XSAny.TYPE_NAME); + + //Set the signedDoc XML content to this element + xmlValue.setDOM(document.getDocumentElement()); + + // Create the attribute statement + final XSAny attrValue = (XSAny) SAMLEngineUtils + .createSamlObject( + AttributeValue.DEFAULT_ELEMENT_NAME, + XSAny.TYPE_NAME); + + //Add previous signedDocXML to the AttributeValue Element + + // if it's necessary encode the information. + if (!isHashing) { + attrValue.getUnknownXMLObjects().add(xmlValue); + } + return attrValue; + } + + private XSAny createAttributeValueForNonSignedDoc(final String value, final boolean isHashing) throws STORKSAMLEngineException { + // Create the attribute statement + final XSAny attrValue = (XSAny) SAMLEngineUtils + .createSamlObject( + AttributeValue.DEFAULT_ELEMENT_NAME, + XSAny.TYPE_NAME); + // if it's necessary encode the information. + if (isHashing) { + attrValue.setTextContent(SAMLEngineUtils.encode(value, SAMLEngineUtils.SHA_512)); + } else { + attrValue.setTextContent(value); + } + return attrValue; + } + + /** + * Generate attribute from a list of values. + * + * @param name the name of the attribute. + * @param values the value of the attribute. + * @param isHashing the is hashing with "SHA-512" algorithm. + * @param status the status of the parameter: "Available", "NotAvailable" or + * "Withheld". + * + * @return the attribute + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Attribute generateAttrSimple(final String name, + final String status, final List values, + final boolean isHashing) throws STORKSAMLEngineException { + LOG.debug("Generate attribute simple: " + name); + final Attribute attribute = (Attribute) SAMLEngineUtils + .createSamlObject(Attribute.DEFAULT_ELEMENT_NAME); + + attribute.setName(name); + attribute.setNameFormat(Attribute.URI_REFERENCE); + + attribute.getUnknownAttributes().put( + new QName(SAMLCore.STORK10_NS.getValue(), "AttributeStatus", + SAMLCore.STORK10_PREFIX.getValue()), status); + + if (values != null) { + LOG.debug("Add attribute values."); + for (int i = 0; i < values.size(); i++) { + final String value = values.get(i); + if (StringUtils.isNotBlank(value)) { + XSAny attrValue = null; + if (!name.equals("http://www.stork.gov.eu/1.0/signedDoc")) { + // Create the attribute statement + attrValue = createAttributeValueForNonSignedDoc(value, isHashing); + + } else { + attrValue = createAttributeValueForSignedDoc(value, isHashing); + attribute.getAttributeValues().add(attrValue); + } + attribute.getAttributeValues().add(attrValue); + } + } + } + return attribute; + } + + /** + * Generate conditions that MUST be evaluated when assessing the validity of + * and/or when using the assertion. + * + * @param notBefore the not before + * @param notOnOrAfter the not on or after + * @param audienceURI the audience URI. + * + * @return the conditions + */ + private Conditions generateConditions(final DateTime notBefore, + final DateTime notOnOrAfter, final String audienceURI) { + LOG.debug("Generate conditions."); + final Conditions conditions = (Conditions) SAMLEngineUtils + .createSamlObject(Conditions.DEFAULT_ELEMENT_NAME); + conditions.setNotBefore(notBefore); + conditions.setNotOnOrAfter(notOnOrAfter); + + final AudienceRestriction restrictions = (AudienceRestriction) SAMLEngineUtils + .createSamlObject(AudienceRestriction.DEFAULT_ELEMENT_NAME); + + final Audience audience = (Audience) SAMLEngineUtils + .createSamlObject(Audience.DEFAULT_ELEMENT_NAME); + audience.setAudienceURI(audienceURI); + + restrictions.getAudiences().add(audience); + conditions.getAudienceRestrictions().add(restrictions); + + if (super.getSamlCoreProperties().isOneTimeUse()) { + final OneTimeUse oneTimeUse = (OneTimeUse) SAMLEngineUtils + .createSamlObject(OneTimeUse.DEFAULT_ELEMENT_NAME); + conditions.getConditions().add(oneTimeUse); + } + return conditions; + } + + /** + * Generate personal attribute list. + * + * @param assertion the assertion + * + * @return the personal attribute list + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private IPersonalAttributeList generatePersonalAttributeList( + final Assertion assertion) throws STORKSAMLEngineException { + LOG.debug("Generate personal attribute list from XMLObject."); + final List listExtensions = assertion.getOrderedChildren(); + + boolean find = false; + AttributeStatement requestedAttr = null; + + // Search the attribute statement. + for (int i = 0; i < listExtensions.size() && !find; i++) { + final XMLObject xml = listExtensions.get(i); + if (xml instanceof AttributeStatement) { + requestedAttr = (AttributeStatement) xml; + find = true; + } + } + + if (!find) { + LOG.error("Error: AttributeStatement it's not present."); + throw new STORKSAMLEngineException( + "AttributeStatement it's not present."); + } + + final List reqAttrs = requestedAttr.getAttributes(); + + final IPersonalAttributeList personalAttrList = new PersonalAttributeList(); + String attributeName; + + // Process the attributes. + for (int nextAttribute = 0; nextAttribute < reqAttrs.size(); nextAttribute++) { + final Attribute attribute = reqAttrs.get(nextAttribute); + + final PersonalAttribute personalAttribute = new PersonalAttribute(); + + attributeName = attribute.getName(); + personalAttribute.setName(attributeName.substring(attributeName + .lastIndexOf('/') + 1)); + + personalAttribute.setStatus(attribute.getUnknownAttributes().get( + new QName(SAMLCore.STORK10_NS.getValue(), + "AttributeStatus", SAMLCore.STORK10_PREFIX + .getValue()))); + + final ArrayList simpleValues = new ArrayList(); + final HashMap multiValues = new HashMap(); + + final List values = attribute.getOrderedChildren(); + + + // Process the values. + for (int nextValue = 0; nextValue < values.size(); nextValue++) { + + final XMLObject xmlObject = values.get(nextValue); + + if (xmlObject instanceof XSStringImpl) { + + simpleValues.add(((XSStringImpl) xmlObject).getValue()); + + } else if (xmlObject instanceof XSAnyImpl) { + + if (attributeName.equals("http://www.stork.gov.eu/1.0/signedDoc")) { + + final XSAnyImpl xmlString = (XSAnyImpl) values + .get(nextValue); + + TransformerFactory transFactory = TransformerFactory + .newInstance(); + Transformer transformer = null; + try { + transformer = transFactory.newTransformer(); + transformer.setOutputProperty( + OutputKeys.OMIT_XML_DECLARATION, "yes"); + } catch (TransformerConfigurationException e) { + LOG.error("Error transformer configuration exception", e); + } + StringWriter buffer = new StringWriter(); + try { + if (xmlString != null && xmlString.getUnknownXMLObjects() != null && xmlString.getUnknownXMLObjects().size() > 0 ){ + transformer.transform(new DOMSource(xmlString + .getUnknownXMLObjects().get(0).getDOM()), + new StreamResult(buffer)); + } + } catch (TransformerException e) { + LOG.error("Error transformer exception", e); + } + String str = buffer.toString(); + + simpleValues.add(str); + + } else if (isComplex(xmlObject)) + { + LOG.info(attributeName + " found"); + // Process complex value. + final XSAnyImpl complexValue = (XSAnyImpl) xmlObject; + + for (int nextComplexValue = 0; nextComplexValue < complexValue + .getUnknownXMLObjects().size(); nextComplexValue++) { + + final XSAnyImpl simple = (XSAnyImpl) complexValue + .getUnknownXMLObjects().get( + nextComplexValue); + + multiValues.put(simple.getElementQName() + .getLocalPart(), simple.getTextContent()); + } + + } + else { + // Process simple value. + simpleValues.add(((XSAnyImpl) xmlObject) + .getTextContent()); + } + + } else { + LOG.error("Error: attribute value it's unknown."); + throw new STORKSAMLEngineException( + "Attribute value it's unknown."); + } + } + + personalAttribute.setValue(simpleValues); + personalAttribute.setComplexValue(multiValues); + personalAttrList.add(personalAttribute); + } + + return personalAttrList; + } + + /** + * Generate stork authentication request. + * + * @param request the request that contain all parameters for generate an + * authentication request. + * + * @return the STORK authentication request that has been processed. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnRequest generateSTORKAuthnRequest( + final STORKAuthnRequest request) throws STORKSAMLEngineException { + LOG.info("Generate SAMLAuthnRequest."); + + // Validate Parameters mandatories + validateParamAuthnReq(request); + + final AuthnRequest authnRequestAux = SAMLEngineUtils + .generateSAMLAuthnRequest(SAMLEngineUtils.generateNCName(), + SAMLVersion.VERSION_20, SAMLEngineUtils + .getCurrentTime()); + + // Set name spaces. + setNameSpaces(authnRequestAux); + + // Add parameter Mandatory STORK + authnRequestAux.setForceAuthn(Boolean.TRUE); + + // Add parameter Mandatory STORK + authnRequestAux.setIsPassive(Boolean.FALSE); + + authnRequestAux.setAssertionConsumerServiceURL(request + .getAssertionConsumerServiceURL()); + + authnRequestAux.setProviderName(request.getProviderName()); + + // Add protocol binding + authnRequestAux.setProtocolBinding(super.getSamlCoreProperties() + .getProtocolBinding()); + + // Add parameter optional STORK + // Destination is mandatory if the destination is a C-PEPS + // The application must to know if the destination is a C-PEPS. + if (StringUtils.isNotBlank(request.getDestination())) { + authnRequestAux.setDestination(request.getDestination()); + } + + // Consent is optional. Set from SAMLEngine.xml - consent. + authnRequestAux.setConsent(super.getSamlCoreProperties() + .getConsentAuthnRequest()); + + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + + if(request.getIssuer()!=null){ + issuer.setValue(request.getIssuer()); + } else { + issuer.setValue(super.getSamlCoreProperties().getRequester()); + } + + // Optional STORK + final String formatEntity = super.getSamlCoreProperties() + .getFormatEntity(); + if (StringUtils.isNotBlank(formatEntity)) { + issuer.setFormat(formatEntity); + } + + authnRequestAux.setIssuer(issuer); + + // Generate stork extensions. + final Extensions storkExtensions = this + .generateSTORKExtensions(request); + // add the extensions to the SAMLAuthnRequest + authnRequestAux.setExtensions(storkExtensions); + + // the result contains an authentication request token (byte[]), + // identifier of the token, and all parameters from the request. + final STORKAuthnRequest authRequest = processExtensions(authnRequestAux + .getExtensions()); + + try { + authRequest.setTokenSaml(super.signAndMarshall(authnRequestAux)); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + + authRequest.setSamlId(authnRequestAux.getID()); + authRequest.setDestination(authnRequestAux.getDestination()); + authRequest.setAssertionConsumerServiceURL(authnRequestAux + .getAssertionConsumerServiceURL()); + + authRequest.setProviderName(authnRequestAux.getProviderName()); + authRequest.setIssuer(authnRequestAux.getIssuer().getValue()); + + return authRequest; + } + + /** + * Generate stork authentication response. + * + * @param request the request + * @param responseAuthReq the response authentication request + * @param ipAddress the IP address + * @param isHashing the is hashing + * + * @return the sTORK authentication response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnResponse generateSTORKAuthnResponse( + final STORKAuthnRequest request, + final STORKAuthnResponse responseAuthReq, final String ipAddress, + final boolean isHashing) throws STORKSAMLEngineException { + LOG.info("generateSTORKAuthnResponse"); + + // Validate parameters + validateParamResponse(request, responseAuthReq); + + // Mandatory SAML + LOG.debug("Generate StatusCode"); + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(StatusCode.SUCCESS_URI); + + LOG.debug("Generate Status"); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + LOG.debug("Generate StatusMessage"); + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(StatusCode.SUCCESS_URI); + + status.setStatusMessage(statusMessage); + + LOG.debug("Generate Response"); + + // RESPONSE + final Response response = genAuthnRespBase(status, request + .getAssertionConsumerServiceURL(), request.getSamlId()); + + DateTime notOnOrAfter = new DateTime(); + + notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() + .getTimeNotOnOrAfter()); + + final Assertion assertion = this.generateAssertion(ipAddress, request + .getAssertionConsumerServiceURL(), request.getSamlId(), request + .getIssuer(), notOnOrAfter); + + final AttributeStatement attrStatement = this + .generateAttributeStatement(responseAuthReq + .getPersonalAttributeList(), isHashing); + + assertion.getAttributeStatements().add(attrStatement); + + // Add assertions + response.getAssertions().add(assertion); + + final STORKAuthnResponse authresponse = new STORKAuthnResponse(); + + try { + authresponse.setTokenSaml(super.signAndMarshall(response)); + authresponse.setSamlId(response.getID()); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + return authresponse; + } + + /** + * Generate stork authentication response. + * + * @param request the request + * @param responseAuthReq the response authentication request + * @param ipAddress the IP address + * @param isHashing the is hashing + * + * @return the sTORK authentication response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnResponse generateSTORKAuthnResponseAfterQuery( + final STORKAuthnRequest request, + final STORKAuthnResponse responseAuthReq, final String ipAddress, + final boolean isHashing, List res) throws STORKSAMLEngineException { + LOG.info("generateSTORKAuthnResponse"); + + // Validate parameters + validateParamResponse(request, responseAuthReq); + + // Mandatory SAML + LOG.debug("Generate StatusCode"); + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(StatusCode.SUCCESS_URI); + + LOG.debug("Generate Status"); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + LOG.debug("Generate StatusMessage"); + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(StatusCode.SUCCESS_URI); + + status.setStatusMessage(statusMessage); + + LOG.debug("Generate Response"); + + // RESPONSE + final Response response = genAuthnRespBase(status, request + .getAssertionConsumerServiceURL(), request.getSamlId()); + + DateTime notOnOrAfter = new DateTime(); + + notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() + .getTimeNotOnOrAfter()); + + final Assertion assertion = this.generateAssertion(ipAddress, request + .getAssertionConsumerServiceURL(), request.getSamlId(), request + .getIssuer(), notOnOrAfter); + + final AttributeStatement attrStatement = this + .generateAttributeStatement(responseAuthReq + .getPersonalAttributeList(), isHashing); + + assertion.getAttributeStatements().add(attrStatement); + + // Add assertions + response.getAssertions().add(assertion); + // Check for response queries + if (res != null && res.size() > 0) + { + //Iterate through them + for (int i = 0; i < res.size(); i++) + { + //If response contains multiple assertions iterate through them as well + if (res.get(i).getAssertions().size() > 1) + { + for (int j = 0; j < res.get(i).getAssertions().size(); j++) + { + Assertion tempAssertion = res.get(i).getAssertions().get(j); + tempAssertion.setParent(response); + response.getAssertions().add(tempAssertion); + } + } else { + Assertion tempAssertion = res.get(i).getAssertion(); + tempAssertion.setParent(response); + response.getAssertions().add(tempAssertion); + } + } + } + + final STORKAuthnResponse authresponse = new STORKAuthnResponse(); + + try { + authresponse.setTokenSaml(super.signAndMarshall(response)); + authresponse.setSamlId(response.getID()); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + return authresponse; + } + + /** + * Generate stork authentication response fail. + * + * @param request the request + * @param response the response + * @param ipAddress the IP address + * @param isHashing the is hashing + * + * @return the sTORK authentication response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnResponse generateSTORKAuthnResponseFail( + final STORKAuthnRequest request, final STORKAuthnResponse response, + final String ipAddress, final boolean isHashing) + throws STORKSAMLEngineException { + LOG.info("generateSTORKAuthnResponseFail"); + + validateParamResponseFail(request, response); + + // Mandatory + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(response.getStatusCode()); + + // Mandatory SAML + LOG.debug("Generate StatusCode."); + // Subordinate code it's optional in case not covered into next codes: + // - urn:oasis:names:tc:SAML:2.0:status:AuthnFailed + // - urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue + // - urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy + // - urn:oasis:names:tc:SAML:2.0:status:RequestDenied + // - http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported + + if (StringUtils.isNotBlank(response.getSubStatusCode())) { + final StatusCode newStatusCode = SAMLEngineUtils + .generateStatusCode(response.getSubStatusCode()); + statusCode.setStatusCode(newStatusCode); + } + + LOG.debug("Generate Status."); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + if (StringUtils.isNotBlank(response.getMessage())) { + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(response.getMessage()); + + status.setStatusMessage(statusMessage); + } + + LOG.debug("Generate Response."); + // RESPONSE + final Response responseFail = genAuthnRespBase(status, request + .getAssertionConsumerServiceURL(), request.getSamlId()); + + DateTime notOnOrAfter = new DateTime(); + + notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() + .getTimeNotOnOrAfter()); + + final Assertion assertion = this.generateAssertion(ipAddress, request + .getAssertionConsumerServiceURL(), request.getSamlId(), request + .getIssuer(), notOnOrAfter); + + responseFail.getAssertions().add(assertion); + + LOG.debug("Sign and Marshall ResponseFail."); + + final STORKAuthnResponse storkResponse = new STORKAuthnResponse(); + + try { + storkResponse.setTokenSaml(super.signAndMarshall(responseFail)); + storkResponse.setSamlId(responseFail.getID()); + } catch (SAMLEngineException e) { + LOG.error("SAMLEngineException.", e); + throw new STORKSAMLEngineException(e); + } + return storkResponse; + } + + /** + * Generate stork attribute query request. + * + * @param request the request that contain all parameters for generate an + * attribute query request. + * + * @return the STORK attribute query request that has been processed. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAttrQueryRequest generateSTORKAttrQueryRequest( + final STORKAttrQueryRequest request) throws STORKSAMLEngineException { + LOG.info("Generate STORKAttrQueryRequest."); + + // Validate Parameters mandatories + validateParamAttrQueryReq(request); + + //final AttributeQuery attrQueryRequestAux = SAMLEngineUtils + final CustomAttributeQuery attrQueryRequestAux = SAMLEngineUtils + .generateSAMLAttrQueryRequest(SAMLEngineUtils.generateNCName(), + SAMLVersion.VERSION_20, SAMLEngineUtils + .getCurrentTime()); + + // Set name spaces. + setNameSpaces(attrQueryRequestAux); + + + // Add parameter optional STORK + // Destination is mandatory if the destination is a C-PEPS + // The application must to know if the destination is a C-PEPS. + if (StringUtils.isNotBlank(request.getDestination())) { + attrQueryRequestAux.setDestination(request.getDestination()); + } + + // Add parameter optional STORK + // Consumer URL is needed if using HTTP-Post + if (StringUtils.isNotBlank(request.getAssertionConsumerServiceURL())) { + attrQueryRequestAux.setAssertionConsumerServiceURL(request.getAssertionConsumerServiceURL()); + } + + // Consent is optional. Set from SAMLEngine.xml - consent. + attrQueryRequestAux.setConsent(super.getSamlCoreProperties() + .getConsentAuthnRequest()); + + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + + //Set the subject - needed for attribute query validation + Subject subject = SAMLEngineUtils.generateSubject(); + SubjectConfirmationBuilder builder = new SubjectConfirmationBuilder(); + SubjectConfirmation subjectConfirmation = builder.buildObject(); + subjectConfirmation.setMethod("urn:oasis:names:tc:SAML:2.0:cm:bearer"); + subject.getSubjectConfirmations().add(subjectConfirmation); + attrQueryRequestAux.setSubject(subject); + + if(request.getIssuer()!=null){ + issuer.setValue(request.getIssuer()); + } else { + issuer.setValue(super.getSamlCoreProperties().getRequester()); + } + + // Optional STORK + final String formatEntity = super.getSamlCoreProperties() + .getFormatEntity(); + if (StringUtils.isNotBlank(formatEntity)) { + issuer.setFormat(formatEntity); + } + + attrQueryRequestAux.setIssuer(issuer); + + // Generate stork extensions. + final Extensions storkExtensions = this + .generateSTORKAttrExtensions(request); + // add the extensions to the SAMLAuthnRequest + attrQueryRequestAux.setExtensions(storkExtensions); + + // the result contains an authentication request token (byte[]), + // identifier of the token, and all parameters from the request. + final STORKAttrQueryRequest attrQueryRequest = processAttrExtensions(attrQueryRequestAux + .getExtensions()); + + try { + attrQueryRequest.setTokenSaml(super.signAndMarshall(attrQueryRequestAux)); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + + attrQueryRequest.setSamlId(attrQueryRequestAux.getID()); + attrQueryRequest.setDestination(attrQueryRequestAux.getDestination()); + attrQueryRequest.setAssertionConsumerServiceURL(attrQueryRequestAux.getAssertionConsumerServiceURL()); + attrQueryRequest.setIssuer(attrQueryRequestAux.getIssuer().getValue()); + + return attrQueryRequest; + } + + /** + * Generate stork attribute query response. + * + * @param request the request + * @param responseAttrQueryRes the response authentication request + * @param ipAddress the IP address + * @param isHashing the hashing of values + * + * @return the sTORK authentication response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAttrQueryResponse generateSTORKAttrQueryResponse( + final STORKAttrQueryRequest request, + final STORKAttrQueryResponse responseAttrQueryRes, final String ipAddress, + final String destinationUrl, final boolean isHashing) throws STORKSAMLEngineException { + LOG.info("generateSTORKAttrQueryResponse"); + + // Validate parameters + validateParamAttrQueryResponse(request, responseAttrQueryRes); + + // Mandatory SAML + LOG.debug("Generate StatusCode"); + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(StatusCode.SUCCESS_URI); + + LOG.debug("Generate Status"); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + LOG.debug("Generate StatusMessage"); + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(StatusCode.SUCCESS_URI); + + status.setStatusMessage(statusMessage); + + LOG.debug("Generate Response"); + + // RESPONSE + final Response response = genAuthnRespBase(status, destinationUrl, + request.getSamlId()); + + DateTime notOnOrAfter = new DateTime(); + + notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() + .getTimeNotOnOrAfter()); + + final Assertion assertion = this.generateAssertion(ipAddress, "" + ,request.getSamlId(), request.getIssuer(), notOnOrAfter); + + final AttributeStatement attrStatement = this + .generateAttributeStatement(responseAttrQueryRes + .getPersonalAttributeList(), isHashing); + + assertion.getAttributeStatements().add(attrStatement); + + // Add assertions + response.getAssertions().add(assertion); + + final STORKAttrQueryResponse attrQueryResponse = new STORKAttrQueryResponse(); + + try { + attrQueryResponse.setTokenSaml(super.signAndMarshall(response)); + attrQueryResponse.setSamlId(response.getID()); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + return attrQueryResponse; + } + + /** + * Generate stork attribute query response from multiple assertions + * + * @param request the request + * @param responseAttrQueryRes the response to the query request + * @param responses the responses to include in the response (aggregation) + * @param ipAddress the IP address + * @param isHashing the hashing of values + * + * @return the sTORK attribute query response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAttrQueryResponse generateSTORKAttrQueryResponseWithAssertions( + final STORKAttrQueryRequest request, final STORKAttrQueryResponse responseAttrQueryRes, + final List responses, final String ipAddress, + final String destinationUrl, final boolean isHashing) throws STORKSAMLEngineException { + LOG.info("generateSTORKAttrQueryResponse"); + + // Validate parameters + validateParamAttrQueryResponseFromAssertions(request, responseAttrQueryRes); + + // Mandatory SAML + LOG.debug("Generate StatusCode"); + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(StatusCode.SUCCESS_URI); + + LOG.debug("Generate Status"); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + LOG.debug("Generate StatusMessage"); + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(StatusCode.SUCCESS_URI); + + status.setStatusMessage(statusMessage); + + LOG.debug("Generate Response"); + + // RESPONSE + final Response response = genAuthnRespBase(status, destinationUrl, + request.getSamlId()); + + DateTime notOnOrAfter = new DateTime(); + + notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() + .getTimeNotOnOrAfter()); + + final Assertion assertion = this.generateAssertion(ipAddress, "" + ,request.getSamlId(), request.getIssuer(), notOnOrAfter); + + final AttributeStatement attrStatement = this + .generateAttributeStatement(responseAttrQueryRes + .getPersonalAttributeList(), isHashing); + + assertion.getAttributeStatements().add(attrStatement); + + // Add the assertions from the former Query responses + response.getAssertions().add(assertion); + if (responses != null && responses.size() > 0) + { + for (int i = 0; i < responses.size(); i++) + { + Assertion tempAssertion = responses.get(i).getAssertion(); + tempAssertion.setParent(response); + response.getAssertions().add(tempAssertion); + } + } + + final STORKAttrQueryResponse attrQueryResponse = new STORKAttrQueryResponse(); + + try { + attrQueryResponse.setTokenSaml(super.signAndMarshall(response)); + attrQueryResponse.setSamlId(response.getID()); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + return attrQueryResponse; + } + + /** + * Generate stork attribute query response fail. + * + * @param request the request + * @param response the response + * @param ipAddress the IP address + * @param isHashing the is hashing + * + * @return the STORK attribute query response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAttrQueryResponse generateSTORKAttrQueryResponseFail( + final STORKAttrQueryRequest request, final STORKAttrQueryResponse response, + final String ipAddress, final String destinationUrl, final boolean isHashing) + throws STORKSAMLEngineException { + LOG.info("generateSTORKAttrQueryResponseFail"); + + validateParamAttrQueryResponseFail(request, response); + + // Mandatory + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(response.getStatusCode()); + + // Mandatory SAML + LOG.debug("Generate StatusCode."); + // Subordinate code it's optional in case not covered into next codes: + // - urn:oasis:names:tc:SAML:2.0:status:AuthnFailed + // - urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue + // - urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy + // - urn:oasis:names:tc:SAML:2.0:status:RequestDenied + // - http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported + + if (StringUtils.isNotBlank(response.getSubStatusCode())) { + final StatusCode newStatusCode = SAMLEngineUtils + .generateStatusCode(response.getSubStatusCode()); + statusCode.setStatusCode(newStatusCode); + } + + LOG.debug("Generate Status."); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + if (StringUtils.isNotBlank(response.getMessage())) { + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(response.getMessage()); + + status.setStatusMessage(statusMessage); + } + + LOG.debug("Generate Response."); + // RESPONSE + final Response responseFail = genAuthnRespBase(status, destinationUrl, + request.getSamlId()); + + DateTime notOnOrAfter = new DateTime(); + + notOnOrAfter = notOnOrAfter.plusSeconds(super.getSamlCoreProperties() + .getTimeNotOnOrAfter()); + + final Assertion assertion = this.generateAssertion(ipAddress, "", + request.getSamlId(), request + .getIssuer(), notOnOrAfter); + + responseFail.getAssertions().add(assertion); + + LOG.debug("Sign and Marshall ResponseFail."); + + final STORKAttrQueryResponse storkResponse = new STORKAttrQueryResponse(); + + try { + storkResponse.setTokenSaml(super.signAndMarshall(responseFail)); + storkResponse.setSamlId(responseFail.getID()); + } catch (SAMLEngineException e) { + LOG.error("SAMLEngineException.", e); + throw new STORKSAMLEngineException(e); + } + return storkResponse; + } + + /** + * Generate stork logout request. + * + * @param request the request that contain all parameters for generate an + * logout request. + * + * @return the STORK logout request that has been processed. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKLogoutRequest generateSTORKLogoutRequest( + final STORKLogoutRequest request) throws STORKSAMLEngineException { + LOG.info("Generate STORKLogoutRequest."); + + // Validate Parameters mandatories + validateParamLogoutReq(request); + + final LogoutRequest logoutRequestAux = SAMLEngineUtils + .generateSAMLLogoutRequest(SAMLEngineUtils.generateNCName(), + SAMLVersion.VERSION_20, SAMLEngineUtils + .getCurrentTime()); + + // Set name spaces. + setNameSpaces(logoutRequestAux); + + + // Add parameter optional STORK + // Destination is mandatory if the destination is a C-PEPS + // The application must to know if the destination is a C-PEPS. + if (StringUtils.isNotBlank(request.getDestination())) { + logoutRequestAux.setDestination(request.getDestination()); + } + + // Consent is optional. Set from SAMLEngine.xml - consent. + logoutRequestAux.setConsent(super.getSamlCoreProperties() + .getConsentAuthnRequest()); + + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + + + if(request.getIssuer()!=null){ + issuer.setValue(request.getIssuer()); + } else { + issuer.setValue(super.getSamlCoreProperties().getRequester()); + } + + // Optional STORK + final String formatEntity = super.getSamlCoreProperties() + .getFormatEntity(); + if (StringUtils.isNotBlank(formatEntity)) { + issuer.setFormat(formatEntity); + } + + logoutRequestAux.setIssuer(issuer); + + // Set the name ID + final NameID newNameID = SAMLEngineUtils.generateNameID(); + newNameID.setValue(request.getSpProvidedId()); + logoutRequestAux.setNameID(newNameID); + + + // the result contains an authentication request token (byte[]), + // identifier of the token, and all parameters from the request. + final STORKLogoutRequest logoutRequest = new STORKLogoutRequest(); + + try { + logoutRequest.setTokenSaml(super.signAndMarshall(logoutRequestAux)); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + + logoutRequest.setSamlId(logoutRequestAux.getID()); + logoutRequest.setDestination(logoutRequestAux.getDestination()); + logoutRequest.setIssuer(logoutRequestAux.getIssuer().getValue()); + logoutRequest.setSpProvidedId(logoutRequestAux.getNameID().getValue()); + + return logoutRequest; + } + + + /** + * Generate stork logout response. + * @param request the request thats being responded to + * @param response the tesponse that contain all parameters for generate an + * logout request. + * + * @return the STORK logout response that has been processed. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKLogoutResponse generateSTORKLogoutResponse( + final STORKLogoutRequest request, + final STORKLogoutResponse response) throws STORKSAMLEngineException { + LOG.info("Generate STORKLogoutResponse."); + + // Validate Parameters mandatories + validateParamLogoutRes(request, response); + + // Mandatory SAML + LOG.debug("Generate StatusCode"); + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(StatusCode.SUCCESS_URI); + + LOG.debug("Generate Status"); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + LOG.debug("Generate StatusMessage"); + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(StatusCode.SUCCESS_URI); + + status.setStatusMessage(statusMessage); + + final LogoutResponse logoutResponseAux= SAMLEngineUtils + .generateSAMLLogoutResponse(SAMLEngineUtils.generateNCName(), + SAMLVersion.VERSION_20, SAMLEngineUtils + .getCurrentTime(), status, request.getSamlId()); + + // Set name spaces. + setNameSpaces(logoutResponseAux); + + + // Add parameter optional STORK + // Destination is mandatory if the destination is a C-PEPS + // The application must to know if the destination is a C-PEPS. + if (StringUtils.isNotBlank(response.getDestination())) { + logoutResponseAux.setDestination(response.getDestination()); + } + + // Consent is optional. Set from SAMLEngine.xml - consent. + logoutResponseAux.setConsent(super.getSamlCoreProperties() + .getConsentAuthnRequest()); + + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + + + if(response.getIssuer()!=null){ + issuer.setValue(response.getIssuer()); + } else { + issuer.setValue(super.getSamlCoreProperties().getRequester()); + } + + // Optional STORK + final String formatEntity = super.getSamlCoreProperties() + .getFormatEntity(); + if (StringUtils.isNotBlank(formatEntity)) { + issuer.setFormat(formatEntity); + } + + logoutResponseAux.setIssuer(issuer); + + + // the result contains an authentication request token (byte[]), + // identifier of the token, and all parameters from the request. + final STORKLogoutResponse logoutResponse = new STORKLogoutResponse(); + + try { + logoutResponse.setTokenSaml(super.signAndMarshall(logoutResponseAux)); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + + logoutResponse.setSamlId(logoutResponseAux.getID()); + logoutResponse.setDestination(logoutResponseAux.getDestination()); + logoutResponse.setIssuer(logoutResponseAux.getIssuer().getValue()); + logoutResponse.setStatusCode(logoutResponseAux.getStatus().getStatusCode().toString()); + logoutResponse.setStatusMessage(logoutResponseAux.getStatus().getStatusMessage().toString()); + + return logoutResponse; + } + + /** + * Generate failed stork logout response. + * + * @param response the response that contain all parameters for generate an + * logout request. + * + * @return the STORK logout response that has been processed. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKLogoutResponse generateSTORKLogoutResponseFail( + final STORKLogoutRequest request, + final STORKLogoutResponse response ) throws STORKSAMLEngineException { + LOG.info("Generate STORKLogoutResponse."); + + // Validate Parameters mandatories + validateParamLogoutResFail(request, response); + + // Mandatory + final StatusCode statusCode = SAMLEngineUtils + .generateStatusCode(response.getStatusCode()); + + // Mandatory SAML + LOG.debug("Generate StatusCode."); + // Subordinate code it's optional in case not covered into next codes: + // - urn:oasis:names:tc:SAML:2.0:status:AuthnFailed + // - urn:oasis:names:tc:SAML:2.0:status:InvalidAttrNameOrValue + // - urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy + // - urn:oasis:names:tc:SAML:2.0:status:RequestDenied + // - http://www.stork.gov.eu/saml20/statusCodes/QAANotSupported + + if (StringUtils.isNotBlank(response.getSubStatusCode())) { + final StatusCode newStatusCode = SAMLEngineUtils + .generateStatusCode(response.getSubStatusCode()); + statusCode.setStatusCode(newStatusCode); + } + + LOG.debug("Generate Status."); + final Status status = SAMLEngineUtils.generateStatus(statusCode); + + if (StringUtils.isNotBlank(response.getStatusMessage())) { + final StatusMessage statusMessage = (StatusMessage) SAMLEngineUtils + .generateStatusMessage(response.getStatusMessage()); + + status.setStatusMessage(statusMessage); + } + + final LogoutResponse logoutResponseAux= SAMLEngineUtils + .generateSAMLLogoutResponse(SAMLEngineUtils.generateNCName(), + SAMLVersion.VERSION_20, SAMLEngineUtils + .getCurrentTime(), status, request.getSamlId()); + + // Set name spaces. + setNameSpaces(logoutResponseAux); + + + // Add parameter optional STORK + // Destination is mandatory if the destination is a C-PEPS + // The application must to know if the destination is a C-PEPS. + if (StringUtils.isNotBlank(response.getDestination())) { + logoutResponseAux.setDestination(response.getDestination()); + } + + // Consent is optional. Set from SAMLEngine.xml - consent. + logoutResponseAux.setConsent(super.getSamlCoreProperties() + .getConsentAuthnRequest()); + + final Issuer issuer = SAMLEngineUtils.generateIssuer(); + + + if(response.getIssuer()!=null){ + issuer.setValue(response.getIssuer()); + } else { + issuer.setValue(super.getSamlCoreProperties().getRequester()); + } + + // Optional STORK + final String formatEntity = super.getSamlCoreProperties() + .getFormatEntity(); + if (StringUtils.isNotBlank(formatEntity)) { + issuer.setFormat(formatEntity); + } + + logoutResponseAux.setIssuer(issuer); + + + // the result contains an authentication request token (byte[]), + // identifier of the token, and all parameters from the request. + final STORKLogoutResponse logoutResponse = new STORKLogoutResponse(); + + try { + logoutResponse.setTokenSaml(super.signAndMarshall(logoutResponseAux)); + } catch (SAMLEngineException e) { + LOG.error("Sign and Marshall.", e); + throw new STORKSAMLEngineException(e); + } + + logoutResponse.setSamlId(logoutResponseAux.getID()); + logoutResponse.setDestination(logoutResponseAux.getDestination()); + logoutResponse.setIssuer(logoutResponseAux.getIssuer().getValue()); + logoutResponse.setStatusCode(logoutResponseAux.getStatus().getStatusCode().toString()); + logoutResponse.setStatusMessage(logoutResponseAux.getStatus().getStatusMessage().toString()); + + return logoutResponse; + } + + /** + * Generate stork authentication statement for the authentication statement. + * + * @param ipAddress the IP address + * + * @return the authentication statement + */ + private AuthnStatement generateStorkAuthStatement(final String ipAddress) { + LOG.debug("Generate stork authenticate statement."); + final SubjectLocality subjectLocality = SAMLEngineUtils + .generateSubjectLocality(ipAddress); + + final AuthnContext authnContext = (AuthnContext) SAMLEngineUtils + .createSamlObject(AuthnContext.DEFAULT_ELEMENT_NAME); + + final AuthnContextDecl authnContextDecl = (AuthnContextDecl) SAMLEngineUtils + .createSamlObject(AuthnContextDecl.DEFAULT_ELEMENT_NAME); + + authnContext.setAuthnContextDecl(authnContextDecl); + + final AuthnStatement authnStatement = SAMLEngineUtils + .generateAthnStatement(new DateTime(), authnContext); + + // Optional STORK + authnStatement.setSessionIndex(null); + authnStatement.setSubjectLocality(subjectLocality); + + return authnStatement; + } + + /** + * Generate stork extensions. + * + * @param request the request + * + * @return the extensions + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Extensions generateSTORKExtensions(final STORKAuthnRequest request) + throws STORKSAMLEngineException { + LOG.debug("Generate STORKExtensions"); + + final Extensions extensions = SAMLEngineUtils.generateExtension(); + + LOG.debug("Generate QAAAttribute"); + final QAAAttribute qaaAttribute = SAMLEngineUtils + .generateQAAAttribute(request.getQaa()); + extensions.getUnknownXMLObjects().add(qaaAttribute); + + + if (StringUtils.isNotEmpty(request + .getSpSector())) { + // Add information about service provider. + LOG.debug("Generate SPSector"); + final SPSector sector = SAMLEngineUtils.generateSPSector(request + .getSpSector()); + extensions.getUnknownXMLObjects().add(sector); + } + + //Delete from specification. Kept for compatibility with Provider Name value + LOG.debug("Generate SPInstitution"); + final SPInstitution institution = SAMLEngineUtils + .generateSPInstitution(request.getProviderName()); + extensions.getUnknownXMLObjects().add(institution); + + + if (StringUtils.isNotEmpty(request.getSpApplication())) { + LOG.debug("Generate SPApplication"); + final SPApplication application = SAMLEngineUtils + .generateSPApplication(request.getSpApplication()); + extensions.getUnknownXMLObjects().add(application); + } + + if (StringUtils.isNotEmpty(request.getSpCountry())) { + LOG.debug("Generate SPCountry"); + final SPCountry country = SAMLEngineUtils.generateSPCountry(request + .getSpCountry()); + extensions.getUnknownXMLObjects().add(country); + } + + //eIDSectorShare: optional; default value: false. + String valueSectorShare = super.getSamlCoreProperties() + .iseIDSectorShare(); + + if (StringUtils.isNotEmpty(valueSectorShare)) { + // Add information about the use of the SAML message. + LOG.debug("Generate EIDSectorShare"); + final EIDSectorShare eIdSectorShare = (EIDSectorShare) SAMLEngineUtils + .createSamlObject(EIDSectorShare.DEF_ELEMENT_NAME); + + eIdSectorShare.setEIDSectorShare(String.valueOf(Boolean.valueOf(valueSectorShare))); + + extensions.getUnknownXMLObjects().add(eIdSectorShare); + } + + String valueCrossSectorShare = super.getSamlCoreProperties() + .iseIDCrossSectorShare(); + + if (StringUtils.isNotEmpty(valueCrossSectorShare)) { + LOG.debug("Generate EIDCrossSectorShare"); + final EIDCrossSectorShare eIdCrossSecShare = (EIDCrossSectorShare) SAMLEngineUtils + .createSamlObject(EIDCrossSectorShare.DEF_ELEMENT_NAME); + eIdCrossSecShare.setEIDCrossSectorShare(String.valueOf(Boolean.valueOf(valueCrossSectorShare))); + extensions.getUnknownXMLObjects().add(eIdCrossSecShare); + } + + + String valueCrossBorderShare = super.getSamlCoreProperties() + .iseIDCrossBorderShare(); + + if (StringUtils.isNotEmpty(valueCrossBorderShare)) { + LOG.debug("Generate EIDCrossBorderShare"); + final EIDCrossBorderShare eIdCrossBordShare = (EIDCrossBorderShare) SAMLEngineUtils + .createSamlObject(EIDCrossBorderShare.DEF_ELEMENT_NAME); + eIdCrossBordShare.setEIDCrossBorderShare(String.valueOf(Boolean.valueOf(valueCrossBorderShare))); + extensions.getUnknownXMLObjects().add(eIdCrossBordShare); + } + + + // Add information about requested attributes. + LOG.debug("Generate RequestedAttributes."); + final RequestedAttributes reqAttributes = (RequestedAttributes) SAMLEngineUtils + .createSamlObject(RequestedAttributes.DEF_ELEMENT_NAME); + + LOG.debug("SAML Engine configuration properties load."); + final Iterator iterator = request + .getPersonalAttributeList().iterator(); + + while (iterator.hasNext()) { + + final PersonalAttribute attribute = iterator.next(); + + if (attribute == null || StringUtils.isBlank(attribute.getName())) { + LOG.error(ATTRIBUTE_EMPTY_LITERAL); + throw new STORKSAMLEngineException(ATTRIBUTE_EMPTY_LITERAL); + } + + // Verified if exits the attribute name. + final String attributeName = super.getSamlCoreProperties() + .getProperty(attribute.getName()); + + if (StringUtils.isBlank(attributeName)) { + LOG.debug("Attribute name: {} was not found.", attribute + .getName()); + throw new STORKSAMLEngineException("Attribute name: " + + attribute.getName() + " was not found."); + } + + // Friendly name it's an optional attribute. + String friendlyName = null; + + if (super.getSamlCoreProperties().isFriendlyName()) { + friendlyName = attribute.getName(); + } + + + String isRequired = null; + if (super.getSamlCoreProperties().isRequired()) { + isRequired = String.valueOf(attribute.isRequired()); + } + + + LOG.debug("Generate requested attribute: " + attributeName); + final RequestedAttribute requestedAttr = SAMLEngineUtils + .generateReqAuthnAttributeSimple(attributeName, + friendlyName, isRequired, attribute + .getValue()); + + // Add requested attribute. + reqAttributes.getAttributes().add(requestedAttr); + } + + // Add requested attributes. + extensions.getUnknownXMLObjects().add(reqAttributes); + + CitizenCountryCode citizenCountryCode = null; + if (request.getCitizenCountryCode() != null && StringUtils.isNotBlank(request.getCitizenCountryCode())){ + LOG.debug("Generate CitizenCountryCode"); + citizenCountryCode = (CitizenCountryCode) SAMLEngineUtils + .createSamlObject(CitizenCountryCode.DEF_ELEMENT_NAME); + + citizenCountryCode.setCitizenCountryCode(request + .getCitizenCountryCode().toUpperCase()); + } + + SPID spid = null; + if(request.getSPID()!=null && StringUtils.isNotBlank(request.getSPID())) { + LOG.debug("Generate SPID"); + spid = (SPID) SAMLEngineUtils + .createSamlObject(SPID.DEF_ELEMENT_NAME); + + spid.setSPID(request.getSPID().toUpperCase()); + } + + AuthenticationAttributes authenticationAttr = (AuthenticationAttributes) SAMLEngineUtils + .createSamlObject(AuthenticationAttributes.DEF_ELEMENT_NAME); + + final VIDPAuthenticationAttributes vIDPauthenticationAttr = (VIDPAuthenticationAttributes) SAMLEngineUtils + .createSamlObject(VIDPAuthenticationAttributes.DEF_ELEMENT_NAME); + + final SPInformation spInformation = (SPInformation) SAMLEngineUtils + .createSamlObject(SPInformation.DEF_ELEMENT_NAME); + + if(citizenCountryCode!=null){ + vIDPauthenticationAttr.setCitizenCountryCode(citizenCountryCode); + } + + if(spid!=null){ + spInformation.setSPID(spid); + } + + vIDPauthenticationAttr.setSPInformation(spInformation); + + authenticationAttr + .setVIDPAuthenticationAttributes(vIDPauthenticationAttr); + extensions.getUnknownXMLObjects().add(authenticationAttr); + + + return extensions; + + } + + /** + * Generate stork extensions. + * + * @param request the attribute query request + * + * @return the extensions + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Extensions generateSTORKAttrExtensions(final STORKAttrQueryRequest request) + throws STORKSAMLEngineException { + LOG.debug("Generate STORKExtensions"); + + final Extensions extensions = SAMLEngineUtils.generateExtension(); + + LOG.debug("Generate QAAAttribute"); + final QAAAttribute qaaAttribute = SAMLEngineUtils + .generateQAAAttribute(request.getQaa()); + extensions.getUnknownXMLObjects().add(qaaAttribute); + + + if (StringUtils.isNotEmpty(request + .getSpSector())) { + // Add information about service provider. + LOG.debug("Generate SPSector"); + final SPSector sector = SAMLEngineUtils.generateSPSector(request + .getSpSector()); + extensions.getUnknownXMLObjects().add(sector); + } + + + if (StringUtils.isNotEmpty(request.getSpApplication())) { + LOG.debug("Generate SPApplication"); + final SPApplication application = SAMLEngineUtils + .generateSPApplication(request.getSpApplication()); + extensions.getUnknownXMLObjects().add(application); + } + + if (StringUtils.isNotEmpty(request.getSpCountry())) { + LOG.debug("Generate SPCountry"); + final SPCountry country = SAMLEngineUtils.generateSPCountry(request + .getSpCountry()); + extensions.getUnknownXMLObjects().add(country); + } + + final EIDSectorShare eIdSectorShare = (EIDSectorShare) SAMLEngineUtils + .createSamlObject(EIDSectorShare.DEF_ELEMENT_NAME); + + eIdSectorShare.setEIDSectorShare(String.valueOf(request.isEIDSectorShare())); + + extensions.getUnknownXMLObjects().add(eIdSectorShare); + + final EIDCrossSectorShare eIdCrossSecShare = (EIDCrossSectorShare) SAMLEngineUtils + .createSamlObject(EIDCrossSectorShare.DEF_ELEMENT_NAME); + eIdCrossSecShare.setEIDCrossSectorShare(String.valueOf(request.isEIDCrossSectorShare())); + extensions.getUnknownXMLObjects().add(eIdCrossSecShare); + + final EIDCrossBorderShare eIdCrossBordShare = (EIDCrossBorderShare) SAMLEngineUtils + .createSamlObject(EIDCrossBorderShare.DEF_ELEMENT_NAME); + eIdCrossBordShare.setEIDCrossBorderShare(String.valueOf(request.isEIDCrossBorderShare())); + extensions.getUnknownXMLObjects().add(eIdCrossBordShare); + + + // Add information about requested attributes. + LOG.debug("Generate RequestedAttributes."); + final RequestedAttributes reqAttributes = (RequestedAttributes) SAMLEngineUtils + .createSamlObject(RequestedAttributes.DEF_ELEMENT_NAME); + + LOG.debug("SAML Engine configuration properties load."); + final Iterator iterator = request + .getPersonalAttributeList().iterator(); + + while (iterator.hasNext()) { + + final PersonalAttribute attribute = iterator.next(); + + if (attribute == null || StringUtils.isBlank(attribute.getName())) { + LOG.error(ATTRIBUTE_EMPTY_LITERAL); + throw new STORKSAMLEngineException(ATTRIBUTE_EMPTY_LITERAL); + } + + // Verified if exits the attribute name. + final String attributeName = super.getSamlCoreProperties() + .getProperty(attribute.getName()); + + if (StringUtils.isBlank(attributeName)) { + LOG.debug("Attribute name: {} was not found.", attribute + .getName()); + throw new STORKSAMLEngineException("Attribute name: " + + attribute.getName() + " was not found."); + } + + // Friendly name it's an optional attribute. + String friendlyName = null; + + if (super.getSamlCoreProperties().isFriendlyName()) { + friendlyName = attribute.getName(); + } + + + String isRequired = null; + if (super.getSamlCoreProperties().isRequired()) { + isRequired = String.valueOf(attribute.isRequired()); + } + + + LOG.debug("Generate requested attribute: " + attributeName); + final RequestedAttribute requestedAttr = SAMLEngineUtils + .generateReqAuthnAttributeSimple(attributeName, + friendlyName, isRequired, attribute + .getValue()); + + // Add requested attribute. + reqAttributes.getAttributes().add(requestedAttr); + } + + // Add requested attributes. + extensions.getUnknownXMLObjects().add(reqAttributes); + + CitizenCountryCode citizenCountryCode = null; + if (request.getCitizenCountryCode() != null && StringUtils.isNotBlank(request.getCitizenCountryCode())){ + LOG.debug("Generate CitizenCountryCode"); + citizenCountryCode = (CitizenCountryCode) SAMLEngineUtils + .createSamlObject(CitizenCountryCode.DEF_ELEMENT_NAME); + + citizenCountryCode.setCitizenCountryCode(request + .getCitizenCountryCode().toUpperCase()); + } + + SPID spid = null; + if(request.getSPID()!=null && StringUtils.isNotBlank(request.getSPID())) { + LOG.debug("Generate SPID"); + spid = (SPID) SAMLEngineUtils + .createSamlObject(SPID.DEF_ELEMENT_NAME); + + spid.setSPID(request.getSPID().toUpperCase()); + } + + + return extensions; + + } + + /** + * Gets the alias from X.509 Certificate at keystore. + * + * @param keyInfo the key info + * @param storkOwnKeyStore + * @param storkOwnKeyStore + * + * @return the alias + */ + private String getAlias(final KeyInfo keyInfo, KeyStore storkOwnKeyStore) { + + LOG.debug("Recover alias information"); + + String alias = null; + try { + final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo + .getX509Datas().get(0).getX509Certificates().get(0); + + // Transform the KeyInfo to X509Certificate. + CertificateFactory certFact; + certFact = CertificateFactory.getInstance("X.509"); + + final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 + .decode(xmlCert.getValue())); + + final X509Certificate cert = (X509Certificate) certFact + .generateCertificate(bis); + + final String tokenSerialNumber = cert.getSerialNumber().toString(16); + final X509Principal tokenIssuerDN = new X509Principal(cert.getIssuerDN().getName()); + + + String aliasCert; + X509Certificate certificate; + boolean find = false; + + for (final Enumeration e = storkOwnKeyStore.aliases(); e + .hasMoreElements() + && !find; ) { + aliasCert = e.nextElement(); + certificate = (X509Certificate) storkOwnKeyStore + .getCertificate(aliasCert); + + final String serialNum = certificate.getSerialNumber() + .toString(16); + + X509Principal issuerDN = new X509Principal(certificate + .getIssuerDN().getName()); + + if(serialNum.equalsIgnoreCase(tokenSerialNumber) + && X509PrincipalUtil.equals2(issuerDN, tokenIssuerDN)){ + alias = aliasCert; + find = true; + } + + } + + } catch (KeyStoreException e) { + LOG.error("Procces getAlias from certificate associated into the signing keystore..", e); + } catch (CertificateException e) { + LOG.error("Procces getAlias from certificate associated into the signing keystore..", e); + } catch (RuntimeException e) { + LOG.error("Procces getAlias from certificate associated into the signing keystore..", e); + } + return alias; + } + + /** + * Gets the country from X.509 Certificate. + * + * @param keyInfo the key info + * + * @return the country + */ + private String getCountry(final KeyInfo keyInfo) { + LOG.debug("Recover country information."); + + String result = ""; + try { + final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo + .getX509Datas().get(0).getX509Certificates().get(0); + + // Transform the KeyInfo to X509Certificate. + CertificateFactory certFact; + certFact = CertificateFactory.getInstance("X.509"); + + final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 + .decode(xmlCert.getValue())); + + final X509Certificate cert = (X509Certificate) certFact + .generateCertificate(bis); + + String distName = cert.getSubjectDN().toString(); + + distName = StringUtils.deleteWhitespace(StringUtils + .upperCase(distName)); + + final String countryCode = "C="; + final int init = distName.indexOf(countryCode); + + if (init > StringUtils.INDEX_NOT_FOUND) { // Exist country code. + int end = distName.indexOf(',', init); + + if (end <= StringUtils.INDEX_NOT_FOUND) { + end = distName.length(); + } + + if (init < end && end > StringUtils.INDEX_NOT_FOUND) { + result = distName.substring(init + countryCode.length(), + end); + //It must be a two characters value + if(result.length()>2){ + result = result.substring(0, 2); + } + } + } + + } catch (CertificateException e) { + LOG.error("Procces getCountry from certificate."); + } + return result.trim(); + } + + /** + * Process all elements XMLObjects from the extensions. + * + * @param extensions the extensions from the authentication request. + * + * @return the STORK authentication request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private STORKAuthnRequest processExtensions(final Extensions extensions) + throws STORKSAMLEngineException { + LOG.debug("Procces the extensions."); + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + final QAAAttribute qaa = (QAAAttribute) extensions + .getUnknownXMLObjects(QAAAttribute.DEF_ELEMENT_NAME).get(0); + request.setQaa(Integer.parseInt(qaa.getQaaLevel())); + + List optionalElements = extensions.getUnknownXMLObjects( + SPSector.DEF_ELEMENT_NAME); + + if (!optionalElements.isEmpty()) { + final SPSector sector = (SPSector) extensions.getUnknownXMLObjects( + SPSector.DEF_ELEMENT_NAME).get(0); + request.setSpSector(sector.getSPSector()); + } + + optionalElements = extensions.getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME); + + if (!optionalElements.isEmpty()) { + final SPApplication application = (SPApplication) extensions + .getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME).get(0); + request.setSpApplication(application.getSPApplication()); + } + + optionalElements = extensions.getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME); + + if (!optionalElements.isEmpty()) { + final SPCountry application = (SPCountry) extensions + .getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME).get(0); + request.setSpCountry(application.getSPCountry()); + } + + + List listCrossBorderShare = extensions + .getUnknownXMLObjects(EIDCrossBorderShare.DEF_ELEMENT_NAME); + + if (!listCrossBorderShare .isEmpty()) { + final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) listCrossBorderShare.get(0); + request.setEIDCrossBorderShare(Boolean.parseBoolean(crossBorderShare + .getEIDCrossBorderShare())); + } + + + List listCrosSectorShare = extensions + .getUnknownXMLObjects(EIDCrossSectorShare.DEF_ELEMENT_NAME); + + if (!listCrosSectorShare.isEmpty()) { + final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) listCrosSectorShare.get(0); + request.setEIDCrossSectorShare(Boolean.parseBoolean(crossSectorShare + .getEIDCrossSectorShare())); + } + + List listSectorShareExtension = extensions + .getUnknownXMLObjects(EIDSectorShare.DEF_ELEMENT_NAME); + if (!listSectorShareExtension.isEmpty()) { + final EIDSectorShare sectorShare = (EIDSectorShare) listSectorShareExtension.get(0); + request.setEIDSectorShare(Boolean.parseBoolean(sectorShare.getEIDSectorShare())); + } + + + + List authAttrs = extensions + .getUnknownXMLObjects(AuthenticationAttributes.DEF_ELEMENT_NAME); + + if (authAttrs != null && !authAttrs.isEmpty()) { + + final AuthenticationAttributes authnAttr = (AuthenticationAttributes) authAttrs + .get(0); + + VIDPAuthenticationAttributes vidpAuthnAttr = null; + if (authnAttr != null && !authAttrs.isEmpty()){ + vidpAuthnAttr = authnAttr.getVIDPAuthenticationAttributes(); + } + + CitizenCountryCode citizenCountryCodeElement = null; + SPInformation spInformation = null; + if (vidpAuthnAttr != null){ + citizenCountryCodeElement = vidpAuthnAttr.getCitizenCountryCode(); + spInformation = vidpAuthnAttr.getSPInformation(); + } + + String citizenCountryCode = null; + if(citizenCountryCodeElement!=null){ + citizenCountryCode = citizenCountryCodeElement.getCitizenCountryCode(); + } + + if(citizenCountryCode!= null && StringUtils.isNotBlank(citizenCountryCode)){ + request.setCitizenCountryCode(citizenCountryCode); + } + + SPID spidElement = null; + if (spInformation != null){ + spidElement = spInformation.getSPID(); + } + + String spid = null; + if(spidElement!=null){ + spid = spidElement.getSPID(); + } + + if (spid != null && StringUtils.isNotBlank(spid)) { + request.setSPID(spid); + } + } + + if (extensions + .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) == null) { + LOG.error("Extensions not contains any requested attribute."); + throw new STORKSAMLEngineException( + "Extensions not contains any requested attribute."); + } + + final RequestedAttributes requestedAttr = (RequestedAttributes) extensions + .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) + .get(0); + + final List reqAttrs = requestedAttr.getAttributes(); + + final IPersonalAttributeList personalAttrList = new PersonalAttributeList(); + + String attributeName; + for (int nextAttribute = 0; nextAttribute < reqAttrs.size(); nextAttribute++) { + final RequestedAttribute attribute = reqAttrs.get(nextAttribute); + final PersonalAttribute personalAttribute = new PersonalAttribute(); + personalAttribute.setIsRequired(Boolean.valueOf(attribute.isRequired())); + personalAttribute.setFriendlyName(attribute.getFriendlyName()); + attributeName = attribute.getName(); + + // recover the last name from the string. + personalAttribute.setName(attributeName.substring(attributeName + .lastIndexOf('/') + 1)); + + final ArrayList valores = new ArrayList(); + final List values = attribute.getOrderedChildren(); + + for (int nextSimpleValue = 0; nextSimpleValue < values.size(); nextSimpleValue++) { + + // Process attributes simples. An AuthenticationRequest only + // must contains simple values. + + final XMLObject xmlObject = values.get(nextSimpleValue); + + if(xmlObject instanceof XSStringImpl){ + + final XSStringImpl xmlString = (XSStringImpl) values + .get(nextSimpleValue); + valores.add(xmlString.getValue()); + + }else{ + + if (attributeName.equals("http://www.stork.gov.eu/1.0/signedDoc")) { + + final XSAnyImpl xmlString = (XSAnyImpl) values + .get(nextSimpleValue); + + TransformerFactory transFactory = TransformerFactory.newInstance(); + Transformer transformer = null; + try { + transformer = transFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + } catch (TransformerConfigurationException e) { + LOG.error("Error transformer configuration exception", e); + } + StringWriter buffer = new StringWriter(); + try { + if (xmlString != null && xmlString.getUnknownXMLObjects() != null && xmlString.getUnknownXMLObjects().size() > 0 ){ + transformer.transform(new DOMSource(xmlString.getUnknownXMLObjects().get(0).getDOM()), + new StreamResult(buffer)); + } + } catch (TransformerException e) { + LOG.error("Error transformer exception", e); + } + String str = buffer.toString(); + + valores.add(str); + + }else{ + + final XSAnyImpl xmlString = (XSAnyImpl) values + .get(nextSimpleValue); + valores.add(xmlString.getTextContent()); + } + + + + } + } + personalAttribute.setValue(valores); + personalAttrList.add(personalAttribute); + } + + request.setPersonalAttributeList(personalAttrList); + + return request; + } + + + /** + * Process all elements XMLObjects from the extensions. + * + * @param extensions the extensions from the authentication request. + * + * @return the STORK authentication request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private STORKAttrQueryRequest processAttrExtensions(final Extensions extensions) + throws STORKSAMLEngineException { + LOG.debug("Procces the atribute query extensions."); + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + final QAAAttribute qaa = (QAAAttribute) extensions + .getUnknownXMLObjects(QAAAttribute.DEF_ELEMENT_NAME).get(0); + request.setQaa(Integer.parseInt(qaa.getQaaLevel())); + + List optionalElements = extensions.getUnknownXMLObjects( + SPSector.DEF_ELEMENT_NAME); + + if (!optionalElements.isEmpty()) { + final SPSector sector = (SPSector) extensions.getUnknownXMLObjects( + SPSector.DEF_ELEMENT_NAME).get(0); + request.setSpSector(sector.getSPSector()); + } + + optionalElements = extensions.getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME); + + if (!optionalElements.isEmpty()) { + final SPApplication application = (SPApplication) extensions + .getUnknownXMLObjects(SPApplication.DEF_ELEMENT_NAME).get(0); + request.setSpApplication(application.getSPApplication()); + } + + optionalElements = extensions.getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME); + + if (!optionalElements.isEmpty()) { + final SPCountry application = (SPCountry) extensions + .getUnknownXMLObjects(SPCountry.DEF_ELEMENT_NAME).get(0); + request.setSpCountry(application.getSPCountry()); + } + + + List listCrossBorderShare = extensions + .getUnknownXMLObjects(EIDCrossBorderShare.DEF_ELEMENT_NAME); + + if (!listCrossBorderShare .isEmpty()) { + final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) listCrossBorderShare.get(0); + request.setEIDCrossBorderShare(Boolean.parseBoolean(crossBorderShare + .getEIDCrossBorderShare())); + } + + + List listCrosSectorShare = extensions + .getUnknownXMLObjects(EIDCrossSectorShare.DEF_ELEMENT_NAME); + + if (!listCrosSectorShare.isEmpty()) { + final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) listCrosSectorShare.get(0); + request.setEIDCrossSectorShare(Boolean.parseBoolean(crossSectorShare + .getEIDCrossSectorShare())); + } + + List listSectorShareExtension = extensions + .getUnknownXMLObjects(EIDSectorShare.DEF_ELEMENT_NAME); + if (!listSectorShareExtension.isEmpty()) { + final EIDSectorShare sectorShare = (EIDSectorShare) listSectorShareExtension.get(0); + request.setEIDSectorShare(Boolean.parseBoolean(sectorShare.getEIDSectorShare())); + } + + + + List authAttrs = extensions + .getUnknownXMLObjects(AuthenticationAttributes.DEF_ELEMENT_NAME); + + if (authAttrs != null && !authAttrs.isEmpty()) { + + final AuthenticationAttributes authnAttr = (AuthenticationAttributes) authAttrs + .get(0); + + VIDPAuthenticationAttributes vidpAuthnAttr = null; + if (authnAttr != null && !authAttrs.isEmpty()){ + vidpAuthnAttr = authnAttr.getVIDPAuthenticationAttributes(); + } + + CitizenCountryCode citizenCountryCodeElement = null; + SPInformation spInformation = null; + if (vidpAuthnAttr != null){ + citizenCountryCodeElement = vidpAuthnAttr.getCitizenCountryCode(); + spInformation = vidpAuthnAttr.getSPInformation(); + } + + String citizenCountryCode = null; + if(citizenCountryCodeElement!=null){ + citizenCountryCode = citizenCountryCodeElement.getCitizenCountryCode(); + } + + if(citizenCountryCode!= null && StringUtils.isNotBlank(citizenCountryCode)){ + request.setCitizenCountryCode(citizenCountryCode); + } + + SPID spidElement = null; + if (spInformation != null){ + spidElement = spInformation.getSPID(); + } + + String spid = null; + if(spidElement!=null){ + spid = spidElement.getSPID(); + } + + if (spid != null && StringUtils.isNotBlank(spid)) { + request.setSPID(spid); + } + } + + if (extensions + .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) == null) { + LOG.error("Extensions not contains any requested attribute."); + throw new STORKSAMLEngineException( + "Extensions not contains any requested attribute."); + } + + final RequestedAttributes requestedAttr = (RequestedAttributes) extensions + .getUnknownXMLObjects(RequestedAttributes.DEF_ELEMENT_NAME) + .get(0); + + final List reqAttrs = requestedAttr.getAttributes(); + + final IPersonalAttributeList personalAttrList = new PersonalAttributeList(); + + String attributeName; + for (int nextAttribute = 0; nextAttribute < reqAttrs.size(); nextAttribute++) { + final RequestedAttribute attribute = reqAttrs.get(nextAttribute); + final PersonalAttribute personalAttribute = new PersonalAttribute(); + personalAttribute.setIsRequired(Boolean.valueOf(attribute.isRequired())); + personalAttribute.setFriendlyName(attribute.getFriendlyName()); + attributeName = attribute.getName(); + + // recover the last name from the string. + personalAttribute.setName(attributeName.substring(attributeName + .lastIndexOf('/') + 1)); + + final ArrayList valores = new ArrayList(); + final List values = attribute.getOrderedChildren(); + + for (int nextSimpleValue = 0; nextSimpleValue < values.size(); nextSimpleValue++) { + + // Process attributes simples. An AuthenticationRequest only + // must contains simple values. + + final XMLObject xmlObject = values.get(nextSimpleValue); + + if(xmlObject instanceof XSStringImpl){ + + final XSStringImpl xmlString = (XSStringImpl) values + .get(nextSimpleValue); + valores.add(xmlString.getValue()); + + }else{ + + if (attributeName.equals("http://www.stork.gov.eu/1.0/signedDoc")) { + + final XSAnyImpl xmlString = (XSAnyImpl) values + .get(nextSimpleValue); + + TransformerFactory transFactory = TransformerFactory.newInstance(); + Transformer transformer = null; + try { + transformer = transFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + } catch (TransformerConfigurationException e) { + LOG.error("Error transformer configuration exception", e); + } + StringWriter buffer = new StringWriter(); + try { + if (xmlString != null && xmlString.getUnknownXMLObjects() != null && xmlString.getUnknownXMLObjects().size() > 0 ){ + transformer.transform(new DOMSource(xmlString.getUnknownXMLObjects().get(0).getDOM()), + new StreamResult(buffer)); + } + } catch (TransformerException e) { + LOG.error("Error transformer exception", e); + } + String str = buffer.toString(); + + valores.add(str); + + }else{ + + final XSAnyImpl xmlString = (XSAnyImpl) values + .get(nextSimpleValue); + valores.add(xmlString.getTextContent()); + } + + + + } + } + personalAttribute.setValue(valores); + personalAttrList.add(personalAttribute); + } + + request.setPersonalAttributeList(personalAttrList); + + return request; + } + + /** + * Sets the name spaces. + * + * @param tokenSaml the new name spaces + */ + private void setNameSpaces(final XMLObject tokenSaml) { + LOG.debug("Set namespaces."); + + final Namespace saml2 = new Namespace(SAMLConstants.SAML20_NS, + SAMLConstants.SAML20_PREFIX); + tokenSaml.addNamespace(saml2); + + final Namespace digSig = new Namespace( + "http://www.w3.org/2000/09/xmldsig#", "ds"); + tokenSaml.addNamespace(digSig); + + final Namespace storkp = new Namespace(SAMLCore.STORK10P_NS.getValue(), + SAMLCore.STORK10P_PREFIX.getValue()); + tokenSaml.addNamespace(storkp); + + final Namespace stork = new Namespace(SAMLCore.STORK10_NS.getValue(), + SAMLCore.STORK10_PREFIX.getValue()); + + tokenSaml.addNamespace(stork); + } + + /** + * Validate parameters from authentication request. + * + * @param request the request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamAuthnReq(final STORKAuthnRequest request) + throws STORKSAMLEngineException { + LOG.info("Validate parameters from authentication request."); + + // URL to which Authentication Response must be sent. + if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Assertion Consumer Service URL it's mandatory."); + } + + // the name of the original service provider requesting the + // authentication. + if (StringUtils.isBlank(request.getProviderName())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Service Provider it's mandatory."); + } + + // object that contain all attributes requesting. + if (request.getPersonalAttributeList() == null + || request.getPersonalAttributeList().isEmpty()) { + throw new STORKSAMLEngineException( + "attributeQueries is null or empty."); + } + + // Quality authentication assurance level. + if ((request.getQaa() < QAAAttribute.MIN_VALUE) + || (request.getQaa() > QAAAttribute.MAX_VALUE)) { + throw new STORKSAMLEngineException("Qaal: " + request.getQaa() + + ", is invalid."); + } + + } + + /** + * Validate parameters from attribute query request. + * + * @param request the request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamAttrQueryReq(final STORKAttrQueryRequest request) + throws STORKSAMLEngineException { + LOG.info("Validate parameters from attribute query request."); + + // URL to which AP Response must be sent. + if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Assertion Consumer Service URL it's mandatory."); + } + + // Destination of the request - not mandatory + /*if (StringUtils.isBlank(request.getDestination())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Destination is mandatory."); + }*/ + + // SP country is empty + if (StringUtils.isBlank(request.getSpCountry())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: SP country is mandatory."); + } + + // object that contain all attributes requesting. + if (request.getPersonalAttributeList() == null + || request.getPersonalAttributeList().isEmpty()) { + throw new STORKSAMLEngineException( + "attributeQueries is null or empty."); + } + + // Quality authentication assurance level. + if ((request.getQaa() < QAAAttribute.MIN_VALUE) + || (request.getQaa() > QAAAttribute.MAX_VALUE)) { + throw new STORKSAMLEngineException("Qaal: " + request.getQaa() + + ", is invalid."); + } + } + + /** + * Validate parameters from logout request. + * + * @param request the request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamLogoutReq(final STORKLogoutRequest request) + throws STORKSAMLEngineException { + LOG.info("Validate parameters from logout request."); + + // URL to which AP Response must be sent. + /*if (StringUtils.isBlank(request.get())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Assertion Consumer Service URL it's mandatory."); + }*/ + + // Destination of the request + if (StringUtils.isBlank(request.getDestination())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Destination is mandatory."); + } + + // SP Provided Id + if (StringUtils.isBlank(request.getSpProvidedId())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: SP provided Id is mandatory."); + } + } + + /** + * Validate parameters from logout response. + * + * @param response the response. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamLogoutRes(final STORKLogoutRequest request, + final STORKLogoutResponse response) throws STORKSAMLEngineException { + LOG.info("Validate parameters from logout request."); + + // Issuer is mandatory + if (StringUtils.isBlank(request.getIssuer())) { + throw new STORKSAMLEngineException( + "Issuer must be not empty or null."); + } + + // Destination of the request + if (StringUtils.isBlank(response.getDestination())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: Destination is mandatory."); + } + + // SP Provided Id + if (StringUtils.isBlank(request.getSpProvidedId())) { + throw new STORKSAMLEngineException( + "StorkSamlEngine: SP provided Id is mandatory."); + } + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + + /** + * Validate parameters from response. + * + * @param request the request + * @param responseAuthReq the response authentication request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamResponse(final STORKAuthnRequest request, + final STORKAuthnResponse responseAuthReq) + throws STORKSAMLEngineException { + LOG.info("Validate parameters response."); + if (StringUtils.isBlank(request.getIssuer())) { + throw new STORKSAMLEngineException( + "Issuer must be not empty or null."); + } + + if (responseAuthReq.getPersonalAttributeList() == null + || responseAuthReq.getPersonalAttributeList().isEmpty()) { + LOG.error("PersonalAttributeList is null or empty."); + throw new STORKSAMLEngineException( + "PersonalAttributeList is null or empty."); + } + + if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { + throw new STORKSAMLEngineException( + "assertionConsumerServiceURL is null or empty."); + } + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + /** + * Validate parameters from response. + * + * @param request the request + * @param responseAttrQueryReq the response authentication request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamAttrQueryResponse(final STORKAttrQueryRequest request, + final STORKAttrQueryResponse responseAttrQueryReq) + throws STORKSAMLEngineException { + LOG.info("Validate attribute querey parameters response."); + if (StringUtils.isBlank(request.getIssuer())) { + throw new STORKSAMLEngineException( + "Issuer must be not empty or null."); + } + + if (responseAttrQueryReq.getPersonalAttributeList() == null + || responseAttrQueryReq.getPersonalAttributeList().isEmpty()) { + LOG.error("PersonalAttributeList is null or empty."); + throw new STORKSAMLEngineException( + "PersonalAttributeList is null or empty."); + } + + /*if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { + throw new STORKSAMLEngineException( + "assertionConsumerServiceURL is null or empty."); + }*/ + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + /** + * Validate parameters from response. + * + * @param request the request + * @param responseAttrQueryReq the response authentication request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamAttrQueryResponseFromAssertions(final STORKAttrQueryRequest request, + final STORKAttrQueryResponse responseAttrQueryReq) + throws STORKSAMLEngineException { + LOG.info("Validate attribute querey parameters response."); + if (StringUtils.isBlank(request.getIssuer())) { + throw new STORKSAMLEngineException( + "Issuer must be not empty or null."); + } + + /*if (responseAttrQueryReq.getPersonalAttributeList() == null + || responseAttrQueryReq.getPersonalAttributeList().isEmpty()) { + LOG.error("PersonalAttributeList is null or empty."); + throw new STORKSAMLEngineException( + "PersonalAttributeList is null or empty."); + }*/ + + /*if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { + throw new STORKSAMLEngineException( + "assertionConsumerServiceURL is null or empty."); + }*/ + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + /** + * Validate parameter from response fail. + * + * @param request the request + * @param response the response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamResponseFail(final STORKAuthnRequest request, + final STORKAuthnResponse response) throws STORKSAMLEngineException { + LOG.info("Validate parameters response fail."); + if (StringUtils.isBlank(response.getStatusCode())) { + throw new STORKSAMLEngineException("Code error it's null or empty."); + } + + if (StringUtils.isBlank(request.getAssertionConsumerServiceURL())) { + throw new STORKSAMLEngineException( + "assertionConsumerServiceURL is null or empty."); + } + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + /** + * Validate parameter from response fail. + * + * @param request the request + * @param response the response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamAttrQueryResponseFail(final STORKAttrQueryRequest request, + final STORKAttrQueryResponse response) throws STORKSAMLEngineException { + LOG.info("Validate parameters response fail."); + if (StringUtils.isBlank(response.getStatusCode())) { + throw new STORKSAMLEngineException("Code error it's null or empty."); + } + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + /** + * Validate parameter from response fail. + * + * @param request the request + * @param response the response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private void validateParamLogoutResFail(final STORKLogoutRequest request, + final STORKLogoutResponse response) throws STORKSAMLEngineException { + LOG.info("Validate parameters response fail."); + + if (StringUtils.isBlank(request.getIssuer())) { + throw new STORKSAMLEngineException( + "Issuer must be not empty or null."); + } + + if (StringUtils.isBlank(response.getStatusCode())) { + throw new STORKSAMLEngineException("Code error it's null or empty."); + } + + if (StringUtils.isBlank(request.getSamlId())) { + throw new STORKSAMLEngineException("request ID is null or empty."); + } + } + + /** + * Validate stork authentication request. + * + * @param tokenSaml the token SAML + * + * @return the sTORK authentication request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnRequest validateSTORKAuthnRequest(final byte[] tokenSaml) + throws STORKSAMLEngineException { + LOG.info("validateSTORKAuthnRequest"); + + final AuthnRequest samlRequest = (AuthnRequest) validateStorkSaml(tokenSaml); + + LOG.debug("Validate Extensions."); + final Validator validatorExt = new ExtensionsSchemaValidator(); + try { + validatorExt.validate(samlRequest.getExtensions()); + } catch (ValidationException e) { + LOG.error("ValidationException: validate Extensions.", e); + throw new STORKSAMLEngineException(e); + } + + LOG.debug("Generate STORKAuthnRequest."); + final STORKAuthnRequest authnRequest = processExtensions(samlRequest + .getExtensions()); + + authnRequest.setCountry(this.getCountry(samlRequest.getSignature() + .getKeyInfo())); + + authnRequest.setAlias(this.getAlias(samlRequest.getSignature() + .getKeyInfo(), super.getSigner().getTrustStore())); + + authnRequest.setSamlId(samlRequest.getID()); + authnRequest.setDestination(samlRequest.getDestination()); + authnRequest.setAssertionConsumerServiceURL(samlRequest + .getAssertionConsumerServiceURL()); + + authnRequest.setProviderName(samlRequest.getProviderName()); + authnRequest.setIssuer(samlRequest.getIssuer().getValue()); + + //Delete unknown elements from requested ones + final Iterator iterator = authnRequest.getPersonalAttributeList().iterator(); + IPersonalAttributeList cleanPerAttrList = (PersonalAttributeList) authnRequest.getPersonalAttributeList(); + while (iterator.hasNext()) { + + final PersonalAttribute attribute = iterator.next(); + + // Verify if the attribute name exits. + final String attributeName = super.getSamlCoreProperties() + .getProperty(attribute.getName()); + + if (StringUtils.isBlank(attributeName)) { + LOG.info("Attribute name: {} was not found. It will be removed from the request object", attribute.getName()); + cleanPerAttrList.remove(attribute.getName()); + } + + } + authnRequest.setPersonalAttributeList(cleanPerAttrList); + + return authnRequest; + + } + + /** + * Validate stork attribute query request. + * + * @param tokenSaml the token SAML + * + * @return the STORK attribute query request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAttrQueryRequest validateSTORKAttrQueryRequest(final byte[] tokenSaml) + throws STORKSAMLEngineException { + LOG.info("validateSTORKAttrQueryRequest"); + + //final AttributeQuery samlRequest = (AttributeQuery) validateStorkSaml(tokenSaml); + final CustomRequestAbstractType samlRequest = (CustomRequestAbstractType) validateStorkSaml(tokenSaml); + + LOG.debug("Validate Extensions."); + final Validator validatorExt = new ExtensionsSchemaValidator(); + try { + validatorExt.validate(samlRequest.getExtensions()); + } catch (ValidationException e) { + LOG.error("ValidationException: validate Extensions.", e); + throw new STORKSAMLEngineException(e); + } + + LOG.debug("Generate STORKAttrQueryRequest."); + final STORKAttrQueryRequest attrRequest = processAttrExtensions(samlRequest + .getExtensions()); + + attrRequest.setCountry(this.getCountry(samlRequest.getSignature() + .getKeyInfo())); + + attrRequest.setAlias(this.getAlias(samlRequest.getSignature() + .getKeyInfo(), super.getSigner().getTrustStore())); + + attrRequest.setSamlId(samlRequest.getID()); + attrRequest.setDestination(samlRequest.getDestination()); + attrRequest.setAssertionConsumerServiceURL(samlRequest + .getAssertionConsumerServiceURL()); + + /*authnRequest.setProviderName(samlRequest.getProviderName());*/ + attrRequest.setIssuer(samlRequest.getIssuer().getValue()); + + //Delete unknown elements from requested ones + final Iterator iterator = attrRequest.getPersonalAttributeList().iterator(); + IPersonalAttributeList cleanPerAttrList = (PersonalAttributeList) attrRequest.getPersonalAttributeList(); + while (iterator.hasNext()) { + + final PersonalAttribute attribute = iterator.next(); + + // Verify if the attribute name exits. + final String attributeName = super.getSamlCoreProperties() + .getProperty(attribute.getName()); + + if (StringUtils.isBlank(attributeName)) { + LOG.info("Attribute name: {} was not found. It will be removed from the request object", attribute.getName()); + cleanPerAttrList.remove(attribute.getName()); + } + + } + attrRequest.setPersonalAttributeList(cleanPerAttrList); + + return attrRequest; + + } + + /** + * Validate stork logout request. + * + * @param tokenSaml the token SAML + * + * @return the STORK logout request + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKLogoutRequest validateSTORKLogoutRequest(final byte[] tokenSaml) + throws STORKSAMLEngineException { + LOG.info("validateSTORKLogoutRequest"); + + final LogoutRequest samlRequest = (LogoutRequest)validateStorkSaml(tokenSaml); + + LOG.debug("Validate Extensions."); + final Validator validatorExt = new ExtensionsSchemaValidator(); + try { + validatorExt.validate(samlRequest.getExtensions()); + } catch (ValidationException e) { + LOG.error("ValidationException: validate Extensions.", e); + throw new STORKSAMLEngineException(e); + } + + LOG.debug("Generate STORKLogoutRequest."); + final STORKLogoutRequest logoutRequest = new STORKLogoutRequest(); + + logoutRequest.setCountry(this.getCountry(samlRequest.getSignature() + .getKeyInfo())); + + logoutRequest.setAlias(this.getAlias(samlRequest.getSignature() + .getKeyInfo(), super.getSigner().getTrustStore())); + + logoutRequest.setSamlId(samlRequest.getID()); + logoutRequest.setDestination(samlRequest.getDestination()); + + logoutRequest.setIssuer(samlRequest.getIssuer().getValue()); + + logoutRequest.setSpProvidedId(samlRequest.getNameID().getValue()); + + return logoutRequest; + + } + + /** + * Validate stork authentication response. + * + * @param tokenSaml the token SAML + * @param userIP the user IP + * + * @return the Stork authentication response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnResponse validateSTORKAuthnResponse( + final byte[] tokenSaml, final String userIP) + throws STORKSAMLEngineException { + + LOG.info("validateSTORKAuthnResponse"); + final Response samlResponse = (Response) validateStorkSaml(tokenSaml); + + LOG.debug("Create StorkAuthResponse."); + final STORKAuthnResponse authnResponse = new STORKAuthnResponse(); + + authnResponse.setCountry(this.getCountry(samlResponse.getSignature() + .getKeyInfo())); + + LOG.debug("Set ID."); + authnResponse.setSamlId(samlResponse.getID()); + LOG.debug("Set InResponseTo."); + authnResponse.setInResponseTo(samlResponse.getInResponseTo()); + LOG.debug("Set statusCode."); + authnResponse.setStatusCode(samlResponse.getStatus().getStatusCode() + .getValue()); + + // Subordinate code. + if (samlResponse.getStatus().getStatusCode().getStatusCode() != null) { + authnResponse.setSubStatusCode(samlResponse.getStatus() + .getStatusCode().getStatusCode().getValue()); + } + + if (samlResponse.getStatus().getStatusMessage() != null) { + LOG.debug("Set statusMessage."); + authnResponse.setMessage(samlResponse.getStatus() + .getStatusMessage().getMessage()); + } + + LOG.debug("validateStorkResponse"); + final Assertion assertion = (Assertion) validateStorkResponse( + samlResponse, userIP); + + if(assertion!=null){ + final DateTime serverDate = new DateTime(); + + if (assertion.getConditions().getNotOnOrAfter().isBefore(serverDate)) { + LOG.error("Token date expired (getNotOnOrAfter = " + + assertion.getConditions().getNotOnOrAfter() + + ", server_date: " + serverDate + ")"); + throw new STORKSAMLEngineException( + "Token date expired (getNotOnOrAfter = " + + assertion.getConditions().getNotOnOrAfter() + + " ), server_date: " + serverDate); + } + + LOG.debug("Set notOnOrAfter."); + authnResponse.setNotOnOrAfter(assertion.getConditions() + .getNotOnOrAfter()); + + LOG.debug("Set notBefore."); + authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); + + authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); + + authnResponse.setAudienceRestriction(((AudienceRestriction) assertion + .getConditions().getAudienceRestrictions().get(0)) + .getAudiences().get(0).getAudienceURI()); + authnResponse.setAssertions(samlResponse.getAssertions()); + } + + // Case no error. + if (assertion!=null && StatusCode.SUCCESS_URI.equalsIgnoreCase(authnResponse + .getStatusCode())) { + LOG.debug("Status Success. Set PersonalAttributeList."); + authnResponse + .setPersonalAttributeList(generatePersonalAttributeList(assertion)); + authnResponse.setFail(false); + } else { + LOG.debug("Status Fail."); + authnResponse.setFail(true); + } + LOG.debug("Return result."); + return authnResponse; + + } + + /** + * Validate stork authentication response. + * + * @param tokenSaml the token SAML + * @param userIP the user IP + * + * @return the Stork authentication response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAuthnResponse validateSTORKAuthnResponseWithQuery( + final byte[] tokenSaml, final String userIP) + throws STORKSAMLEngineException { + + LOG.info("validateSTORKAuthnResponse"); + final Response samlResponse = (Response) validateStorkSaml(tokenSaml); + + LOG.debug("Create StorkAuthResponse."); + final STORKAuthnResponse authnResponse = new STORKAuthnResponse(); + + authnResponse.setCountry(this.getCountry(samlResponse.getSignature() + .getKeyInfo())); + + LOG.debug("Set ID."); + authnResponse.setSamlId(samlResponse.getID()); + LOG.debug("Set InResponseTo."); + authnResponse.setInResponseTo(samlResponse.getInResponseTo()); + LOG.debug("Set statusCode."); + authnResponse.setStatusCode(samlResponse.getStatus().getStatusCode() + .getValue()); + + // Subordinate code. + if (samlResponse.getStatus().getStatusCode().getStatusCode() != null) { + authnResponse.setSubStatusCode(samlResponse.getStatus() + .getStatusCode().getStatusCode().getValue()); + } + + if (samlResponse.getStatus().getStatusMessage() != null) { + LOG.debug("Set statusMessage."); + authnResponse.setMessage(samlResponse.getStatus() + .getStatusMessage().getMessage()); + } + + LOG.debug("validateStorkResponse"); + final Assertion assertion = (Assertion) validateStorkResponse( + samlResponse, userIP); + + if(assertion!=null){ + final DateTime serverDate = new DateTime(); + + if (assertion.getConditions().getNotOnOrAfter().isBefore(serverDate)) { + LOG.error("Token date expired (getNotOnOrAfter = " + + assertion.getConditions().getNotOnOrAfter() + + ", server_date: " + serverDate + ")"); + throw new STORKSAMLEngineException( + "Token date expired (getNotOnOrAfter = " + + assertion.getConditions().getNotOnOrAfter() + + " ), server_date: " + serverDate); + } + + LOG.debug("Set notOnOrAfter."); + authnResponse.setNotOnOrAfter(assertion.getConditions() + .getNotOnOrAfter()); + + LOG.debug("Set notBefore."); + authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); + + authnResponse.setNotBefore(assertion.getConditions().getNotBefore()); + + authnResponse.setAudienceRestriction(((AudienceRestriction) assertion + .getConditions().getAudienceRestrictions().get(0)) + .getAudiences().get(0).getAudienceURI()); + } + + // Case no error. + if (assertion!=null && StatusCode.SUCCESS_URI.equalsIgnoreCase(authnResponse + .getStatusCode())) { + LOG.debug("Status Success. Set PersonalAttributeList."); + authnResponse + .setPersonalAttributeList(generatePersonalAttributeList(assertion)); + authnResponse.setFail(false); + } else { + LOG.debug("Status Fail."); + authnResponse.setFail(true); + } + + authnResponse.setAssertions(samlResponse.getAssertions()); + if (samlResponse.getAssertions().size() > 1) + { + PersonalAttributeList total = new PersonalAttributeList(); + List attrList = new ArrayList(); + for (int i = 0; i < samlResponse.getAssertions().size(); i++) + { + Assertion tempAssertion = (Assertion)samlResponse.getAssertions().get(i); + IPersonalAttributeList temp = generatePersonalAttributeList(tempAssertion); + if (temp != null) + { + attrList.add(temp); + for (PersonalAttribute attribute : temp) { + PersonalAttribute attr = (PersonalAttribute)attribute.clone(); + attr.setName(attr.getName()+tempAssertion.getID()); + total.add(attr); + } + } + } + authnResponse.setPersonalAttributeLists(attrList); + authnResponse.setTotalPersonalAttributeList(total); + } + + LOG.debug("Return result."); + return authnResponse; + + } + + /** + * Validate stork attribute query response. + * + * @param tokenSaml the token SAML + * @param userIP the user IP + * + * @return the Stork attribute query response + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public STORKAttrQueryResponse validateSTORKAttrQueryResponse( + final byte[] tokenSaml, final String userIP) + throws STORKSAMLEngineException { + + LOG.info("validateSTORKAttrQueryResponse"); + final Response samlResponse = (Response) validateStorkSaml(tokenSaml); + + LOG.debug("Create StorkAttrQueryResponse."); + final STORKAttrQueryResponse attrQueryResponse = new STORKAttrQueryResponse(); + + attrQueryResponse.setCountry(this.getCountry(samlResponse.getSignature() + .getKeyInfo())); + + LOG.debug("Set ID."); + attrQueryResponse.setSamlId(samlResponse.getID()); + LOG.debug("Set InResponseTo."); + attrQueryResponse.setInResponseTo(samlResponse.getInResponseTo()); + LOG.debug("Set statusCode."); + attrQueryResponse.setStatusCode(samlResponse.getStatus().getStatusCode() + .getValue()); + + + // Subordinate code. + if (samlResponse.getStatus().getStatusCode().getStatusCode() != null) { + attrQueryResponse.setSubStatusCode(samlResponse.getStatus() + .getStatusCode().getStatusCode().getValue()); + } + + if (samlResponse.getStatus().getStatusMessage() != null) { + LOG.debug("Set statusMessage."); + attrQueryResponse.setMessage(samlResponse.getStatus() + .getStatusMessage().getMessage()); + } + + LOG.debug("validateStorkResponse"); + final Assertion assertion = (Assertion) validateStorkResponse( + samlResponse, userIP); + + if(assertion!=null){ + final DateTime serverDate = new DateTime(); + + attrQueryResponse.setAssertion(assertion); + + if (assertion.getConditions().getNotOnOrAfter().isBefore(serverDate)) { + LOG.error("Token date expired (getNotOnOrAfter = " + + assertion.getConditions().getNotOnOrAfter() + + ", server_date: " + serverDate + ")"); + throw new STORKSAMLEngineException( + "Token date expired (getNotOnOrAfter = " + + assertion.getConditions().getNotOnOrAfter() + + " ), server_date: " + serverDate); + } + + LOG.debug("Set notOnOrAfter."); + attrQueryResponse.setNotOnOrAfter(assertion.getConditions() + .getNotOnOrAfter()); + + LOG.debug("Set notBefore."); + attrQueryResponse.setNotBefore(assertion.getConditions().getNotBefore()); + + attrQueryResponse.setNotBefore(assertion.getConditions().getNotBefore()); + + attrQueryResponse.setAudienceRestriction(((AudienceRestriction) assertion + .getConditions().getAudienceRestrictions().get(0)) + .getAudiences().get(0).getAudienceURI()); + } + + // Case no error. + if (assertion!=null && StatusCode.SUCCESS_URI.equalsIgnoreCase(attrQueryResponse + .getStatusCode())) { + LOG.debug("Status Success. Set PersonalAttributeList."); + attrQueryResponse + .setPersonalAttributeList(generatePersonalAttributeList(assertion)); + attrQueryResponse.setFail(false); + } else { + LOG.debug("Status Fail."); + attrQueryResponse.setFail(true); + } + + attrQueryResponse.setAssertions(samlResponse.getAssertions()); + if (samlResponse.getAssertions().size() > 1) + { + PersonalAttributeList total = new PersonalAttributeList(); + List attrList = new ArrayList(); + for (int i = 0; i < samlResponse.getAssertions().size(); i++) + { + Assertion tempAssertion = (Assertion)samlResponse.getAssertions().get(i); + IPersonalAttributeList temp = generatePersonalAttributeList(tempAssertion); + if (temp != null) + { + attrList.add(temp); + for (PersonalAttribute attribute : temp) { + PersonalAttribute attr = (PersonalAttribute)attribute.clone(); + attr.setName(attr.getName()+tempAssertion.getID()); + total.add(attr); + } + } + } + attrQueryResponse.setPersonalAttributeLists(attrList); + attrQueryResponse.setTotalPersonalAttributeList(total); + } + + LOG.debug("Return result."); + return attrQueryResponse; + + } + + /** + * Validate stork response. + * + * @param samlResponse the SAML response + * @param userIP the user IP + * + * @return the assertion + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private Assertion validateStorkResponse(final Response samlResponse, + final String userIP) throws STORKSAMLEngineException { + // Exist only one Assertion + + if (samlResponse.getAssertions() == null + || samlResponse.getAssertions().isEmpty()) { + LOG.info("Assertion is null or empty."); //in replace of throw new STORKSAMLEngineException("Assertion is null or empty.") + return null; + } + + final Assertion assertion = (Assertion) samlResponse.getAssertions() + .get(0); + + LOG.debug("Verified method Bearer"); + for (final Iterator iter = assertion.getSubject() + .getSubjectConfirmations().iterator(); iter.hasNext();) { + final SubjectConfirmation element = iter.next(); + final boolean isBearer = SubjectConfirmation.METHOD_BEARER + .equals(element.getMethod()); + + final boolean ipValidate = super.getSamlCoreProperties() + .isIpValidation(); + + if (ipValidate) { + if (isBearer) { + if (StringUtils.isBlank(userIP)) { + LOG.error("browser_ip is null or empty."); + throw new STORKSAMLEngineException( + "browser_ip is null or empty."); + } else if (StringUtils.isBlank(element + .getSubjectConfirmationData().getAddress())) { + LOG.error("token_ip attribute is null or empty."); + throw new STORKSAMLEngineException( + "token_ip attribute is null or empty."); + } + } + + final boolean ipEqual = element.getSubjectConfirmationData() + .getAddress().equals(userIP); + + // Validation ipUser + if (!ipEqual && ipValidate) { + LOG.error("SubjectConfirmation BEARER: "); + throw new STORKSAMLEngineException( + "IPs doesn't match : token_ip (" + + element.getSubjectConfirmationData() + .getAddress() + ") browser_ip (" + + userIP + ")"); + } + } + + } + return assertion; + } + + /** + * Validate stork SAML. + * + * @param tokenSaml the token SAML + * + * @return the signable SAML object + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + private SignableSAMLObject validateStorkSaml(final byte[] tokenSaml) + throws STORKSAMLEngineException { + + LOG.info("Validate StorkSaml message."); + + if (tokenSaml == null) { + LOG.error("Saml authentication request is null."); + throw new STORKSAMLEngineException( + "Saml authentication request is null."); + } + + LOG.debug("Generate AuthnRequest from request."); + SignableSAMLObject samlObject; + + try { + samlObject = (SignableSAMLObject) super.unmarshall(tokenSaml); + } catch (SAMLEngineException e) { + LOG.error("SAMLEngineException unmarshall.", e); + throw new STORKSAMLEngineException(e); + } + + boolean validateSign = true; + + if (StringUtils.isNotBlank(super.getSamlCoreProperties().getProperty( + "validateSignature"))) { + validateSign = Boolean.valueOf(super.getSamlCoreProperties() + .getProperty("validateSignature")); + } + + if (validateSign) { + LOG.debug("Validate Signature."); + try { + super.validateSignature(samlObject); + } catch (SAMLEngineException e) { + LOG.error("SAMLEngineException validateSignature.", e); + throw new STORKSAMLEngineException(e); + } + } + + LOG.debug("Validate Schema."); + final ValidatorSuite validatorSuite = Configuration + .getValidatorSuite("saml2-core-schema-validator"); + try { + if (samlObject.getElementQName().toString().endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) + { + CustomAttributeQueryValidator val = + new CustomAttributeQueryValidator(); + val.validate((CustomAttributeQuery)samlObject); + } + else if (samlObject instanceof Response + && ((Response) samlObject).getAssertions().size() > 1) { + MultipleAssertionResponseValidator val = + new MultipleAssertionResponseValidator(); + val.validate((Response)samlObject); + } + else + validatorSuite.validate(samlObject); + } catch (ValidationException e) { + LOG.error("ValidationException.", e); + throw new STORKSAMLEngineException(e); + } + + return samlObject; + } + + private boolean isComplex(XMLObject xmlObject) + { + boolean isComplex = false; + + final XSAnyImpl complexValue = (XSAnyImpl) xmlObject; + + for (int nextComplexValue = 0; nextComplexValue < complexValue + .getUnknownXMLObjects().size(); nextComplexValue++) { + + final XSAnyImpl simple = (XSAnyImpl) complexValue + .getUnknownXMLObjects().get( + nextComplexValue); + + if (simple.getElementQName().getLocalPart() != null) + { + isComplex = true; + break; + } + } + + return isComplex; + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java new file mode 100644 index 000000000..724a522d1 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/X509PrincipalUtil.java @@ -0,0 +1,69 @@ +package eu.stork.peps.auth.engine; + +import org.bouncycastle.asn1.DERObjectIdentifier; +import org.bouncycastle.jce.X509Principal; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * Utility class used to decrease complexity of comparison of 2 X509principal + * + * @author vanegdi + * @version $Revision: 1.00 $, $Date: 2013-05-24 20:53:51 $ + */ +public final class X509PrincipalUtil{ + + private static final DERObjectIdentifier[] DER_OBJECT_IDENTIFIERS_ARRAY= { + X509Principal.CN, + X509Principal.OU, + X509Principal.O, + X509Principal.L, + X509Principal.ST, + X509Principal.C, + X509Principal.E + }; + + private static final Logger LOG = LoggerFactory.getLogger(eu.stork.peps.auth.engine.X509PrincipalUtil.class); + + /** + * Compares 2 X509Principals to detect if they equals + * @param principal1 + * @param principal2 + * @return true if arguments are not null and equals + */ + public static boolean equals(X509Principal principal1, X509Principal principal2) { + boolean continueProcess = true; + if (principal1 == null || principal2 == null){ + return false; + } + + int cpt = 0; + while(continueProcess && cpt < DER_OBJECT_IDENTIFIERS_ARRAY.length){ + continueProcess = continueProcess && x509ValuesByIdentifierEquals(principal1, principal2, DER_OBJECT_IDENTIFIERS_ARRAY[cpt]); + cpt++; + } + return continueProcess; + } + + public static boolean equals2(X509Principal principal1, X509Principal principal2) { + + if (principal1 == null || principal2 == null){ + return false; + } + + if (principal1.getName().equals(principal2.getName())) + return true; + else + return false; + + } + + private static boolean x509ValuesByIdentifierEquals(X509Principal principal1, X509Principal principal2, DERObjectIdentifier identifier){ + return principal1.getValues(identifier).equals(principal2.getValues(identifier)); + } + + private X509PrincipalUtil(){ + // default contructor + LOG.error("Fake X509PrincipalUtil : never be called"); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java new file mode 100644 index 000000000..a9efe6362 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/AuthenticationAttributes.java @@ -0,0 +1,57 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface AuthenticationAttributes. + * @author fjquevedo + */ +public interface AuthenticationAttributes extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "AuthenticationAttributes"; + + /** Default element name. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** Local name of the XSI type. */ + String TYPE_LOCAL_NAME = "AuthenticationAttributesType"; + + /** QName of the XSI type. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + + /** + * Gets the citizen country code. + * + * @return the citizen country code + */ + VIDPAuthenticationAttributes getVIDPAuthenticationAttributes(); + + + /** + * Sets the vIDP authentication attributes. + * + * @param newVIDPAuthenticationAttr the new vIDP authentication attributes + */ + void setVIDPAuthenticationAttributes(VIDPAuthenticationAttributes newVIDPAuthenticationAttr); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java new file mode 100644 index 000000000..4af7524ea --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CitizenCountryCode.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDCrossBorderShare. + * @author fjquevedo + */ +public interface CitizenCountryCode extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "CitizenCountryCode"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "CitizenCountryCodeType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** + * Gets the SP country. + * + * @return the sP country + */ + String getCitizenCountryCode(); + + + /** + * Sets the citizen country code. + * + * @param citizenCountryCode the new citizen country code + */ + void setCitizenCountryCode(String citizenCountryCode); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java new file mode 100644 index 000000000..b558fc19d --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomAttributeQuery.java @@ -0,0 +1,51 @@ +package eu.stork.peps.auth.engine.core; + +import java.util.List; +import javax.xml.namespace.QName; + +import org.opensaml.common.xml.SAMLConstants; +import org.opensaml.saml2.core.Attribute; +import org.opensaml.saml2.core.Subject; +import org.opensaml.saml2.core.SubjectQuery; + +public interface CustomAttributeQuery extends CustomRequestAbstractType { + /** Element local name. */ + public static final String DEFAULT_ELEMENT_LOCAL_NAME = "AttributeQuery"; + + /** Default element name. */ + public static final QName DEFAULT_ELEMENT_NAME = new QName(SAMLConstants.SAML20P_NS, DEFAULT_ELEMENT_LOCAL_NAME, + SAMLConstants.SAML20P_PREFIX); + + /** Local name of the XSI type. */ + public static final String TYPE_LOCAL_NAME = "CustomAttributeQueryType"; + + /** QName of the XSI type. */ + public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20P_NS, TYPE_LOCAL_NAME, + SAMLConstants.SAML20P_PREFIX); + + /** AssertionConsumerServiceURL attribute name. */ + public static final String ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME + = "AssertionConsumerServiceURL"; + + /** + * Gets the Attributes of this query. + * + * @return the list of Attributes of this query + */ + public List getAttributes(); + + /** + * Gets the Subject of this request. + * + * @return the Subject of this request + */ + public Subject getSubject(); + + /** + * Sets the Subject of this request. + * + * @param newSubject the Subject of this request + */ + public void setSubject(Subject newSubject); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java new file mode 100644 index 000000000..77dd8c4a5 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/CustomRequestAbstractType.java @@ -0,0 +1,176 @@ +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.joda.time.DateTime; +import org.opensaml.common.SAMLVersion; +import org.opensaml.common.SignableSAMLObject; +import org.opensaml.common.xml.SAMLConstants; +import org.opensaml.saml2.common.Extensions; +import org.opensaml.saml2.core.Issuer; + +public interface CustomRequestAbstractType extends SignableSAMLObject { + + /** Local name of the XSI type. */ + public static final String TYPE_LOCAL_NAME = "RequestAbstractType"; + + /** QName of the XSI type. */ + public static final QName TYPE_NAME = new QName(SAMLConstants.SAML20P_NS, TYPE_LOCAL_NAME, + SAMLConstants.SAML20P_PREFIX); + + /** ID attribute name. */ + public static final String ID_ATTRIB_NAME = "ID"; + + /** Version attribute name. */ + public static final String VERSION_ATTRIB_NAME = "Version"; + + /** IssueInstant attribute name. */ + public static final String ISSUE_INSTANT_ATTRIB_NAME = "IssueInstant"; + + /** Destination attribute name. */ + public static final String DESTINATION_ATTRIB_NAME = "Destination"; + + /** Destination attribute name. */ + public static final String ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME = "AssertionConsumerServiceURL"; + + /** Consent attribute name. */ + public static final String CONSENT_ATTRIB_NAME = "Consent"; + + /** Unspecified consent URI. */ + public static final String UNSPECIFIED_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:unspecified"; + + /** Obtained consent URI. */ + public static final String OBTAINED_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:obtained"; + + /** Prior consent URI. */ + public static final String PRIOR_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:prior"; + + /** Implicit consent URI. */ + public static final String IMPLICIT_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:current-implicit"; + + /** Explicit consent URI. */ + public static final String EXPLICIT_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:current-explicit"; + + /** Unavailable consent URI. */ + public static final String UNAVAILABLE_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:unavailable"; + + /** Inapplicable consent URI. */ + public static final String INAPPLICABLE_CONSENT = "urn:oasis:names:tc:SAML:2.0:consent:inapplicable"; + + /** + * Gets the SAML Version of this request. + * + * @return the SAML Version of this request. + */ + public SAMLVersion getVersion(); + + /** + * Sets the SAML Version of this request. + * + * @param newVersion the SAML Version of this request + */ + public void setVersion(SAMLVersion newVersion); + + /** + * Gets the unique identifier of the request. + * + * @return the unique identifier of the request + */ + public String getID(); + + /** + * Sets the unique identifier of the request. + * + * @param newID the unique identifier of the request + */ + + public void setID(String newID); + + /** + * Gets the date/time the request was issued. + * + * @return the date/time the request was issued + */ + + public DateTime getIssueInstant(); + + /** + * Sets the date/time the request was issued. + * + * @param newIssueInstant the date/time the request was issued + */ + public void setIssueInstant(DateTime newIssueInstant); + + /** + * Gets the URI of the destination of the request. + * + * @return the URI of the destination of the request + */ + public String getDestination(); + + /** + * Sets the URI of the destination of the request. + * + * @param newDestination the URI of the destination of the request + */ + public void setDestination(String newDestination); + + /** + * Sets the index of the particular Assertion Consumer Service to which the response to this request should be + * delivered. + * + * @param newAssertionConsumerServiceIndex the new value of the AssertionConsumerServiceIndex attribute + */ + public void setAssertionConsumerServiceURL(String newServiceUrl); + + /** + * Gets the URL of the particular Assertion Consumer Service to which the response to this request should be + * delivered. + * + * @return the value of the AssertionConsumerServiceURL attribute + */ + public String getAssertionConsumerServiceURL(); + + /** + * Gets the consent obtained from the principal for sending this request. + * + * @return the consent obtained from the principal for sending this request + */ + public String getConsent(); + + /** + * Sets the consent obtained from the principal for sending this request. + * + * @param newConsent the new consent obtained from the principal for sending this request + */ + public void setConsent(String newConsent); + + /** + * Gets the issuer of this request. + * + * @return the issuer of this request + */ + public Issuer getIssuer(); + + /** + * Sets the issuer of this request. + * + * @param newIssuer the issuer of this request + */ + public void setIssuer(Issuer newIssuer); + + /** + * Gets the Extensions of this request. + * + * @return the Status of this request + */ + public Extensions getExtensions(); + + /** + * Sets the Extensions of this request. + * + * @param newExtensions the Extensions of this request + */ + public void setExtensions(Extensions newExtensions); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java new file mode 100644 index 000000000..03541ece1 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossBorderShare.java @@ -0,0 +1,58 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDCrossBorderShare. + * @author fjquevedo + */ +public interface EIDCrossBorderShare extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "eIDCrossBorderShare"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "eIDCrossBorderShareType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + + /** + * Gets the eID cross border share. + * + * @return the eID cross border share + */ + String getEIDCrossBorderShare(); + + + /** + * Sets the eID cross border share. + * + * @param eIDCrossBorderShare the new eID cross border share + */ + void setEIDCrossBorderShare(String eIDCrossBorderShare); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java new file mode 100644 index 000000000..14c504510 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDCrossSectorShare.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDCrossSectorShare. + * @author fjquevedo + */ +public interface EIDCrossSectorShare extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String ELEM_LOCAL_NAME = "eIDCrossSectorShare"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), ELEM_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "eIDCrossSectorShareType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** + * Gets the eID cross sector share. + * + * @return the eID cross sector share + */ + String getEIDCrossSectorShare(); + + /** + * Sets the eID cross sector share. + * + * @param eIDCrossSectorShare the new eID cross sector share + */ + void setEIDCrossSectorShare(String eIDCrossSectorShare); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java new file mode 100644 index 000000000..0202f000c --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/EIDSectorShare.java @@ -0,0 +1,57 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDSectorShare. + * @author fjquevedo + */ +public interface EIDSectorShare extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "eIDSectorShare"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "eIDSectorShare"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + + /** + * Gets the eID sector share. + * + * @return the eID sector share + */ + String getEIDSectorShare(); + + /** + * Sets the eID sector share. + * + * @param eIDSectorShare the new eID sector share + */ + void setEIDSectorShare(String eIDSectorShare); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java new file mode 100644 index 000000000..d99d23896 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/QAAAttribute.java @@ -0,0 +1,63 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * STORK Quality Authentication Assurance Level Attribute Interface. + * + * @author fjquevedo + */ +public interface QAAAttribute extends SAMLObject { + + /** Element local name. */ + String DEF_LOCAL_NAME = "QualityAuthenticationAssuranceLevel"; + + /** Default element name. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** Local name of the XSI type. */ + String TYPE_LOCAL_NAME = "QualityAuthenticationAssuranceLevelAbstractType"; + + /** QName of the XSI type. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** The minimum value allowed. */ + int MIN_VALUE = 1; + + /** The Max value allowed. */ + int MAX_VALUE = 4; + + /** + * Gets the qAA level. + * + * @return the qAA level + */ + String getQaaLevel(); + + /** + * Sets the qAA level. + * + * @param qaaLevel the new qAA level + * + */ + void setQaaLevel(String qaaLevel); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java new file mode 100644 index 000000000..ffd32b3cf --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttribute.java @@ -0,0 +1,140 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import java.util.List; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; +import org.opensaml.xml.AttributeExtensibleXMLObject; +import org.opensaml.xml.schema.XSBooleanValue; +import org.opensaml.xml.XMLObject; + +/** + * The Interface RequestedAttribute. + * + * @author fjquevedo + */ +public interface RequestedAttribute extends SAMLObject, + AttributeExtensibleXMLObject { + + /** Element local name. */ + String DEF_LOCAL_NAME = "RequestedAttribute"; + + /** Default element name. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** Local name of the XSI type. */ + String TYPE_LOCAL_NAME = "RequestedAttributeAbstractType"; + + /** QName of the XSI type. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** NAME_ATTRIB_NAME attribute name. */ + String NAME_ATTRIB_NAME = "Name"; + + /** NAME_FORMAT_ATTRIB_NAME attribute name. */ + String NAME_FORMAT_ATTR = "NameFormat"; + + /** IS_REQUIRED_ATTRIB_NAME attribute name. */ + String IS_REQUIRED_ATTR = "isRequired"; + + /** FRIENDLY_NAME_ATTRIB_NAME attribute name. */ + String FRIENDLY_NAME_ATT = "FriendlyName"; + + /** Unspecified attribute format ID. */ + String UNSPECIFIED = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"; + + /** URI reference attribute format ID. */ + String URI_REFERENCE = "urn:oasis:names:tc:SAML:2.0:attrname-format:uri"; + + /** Basic attribute format ID. */ + String BASIC = "urn:oasis:names:tc:SAML:2.0:attrname-format:basic"; + + /** + * Gets the name. + * + * @return the name + */ + String getName(); + + /** + * Sets the name. + * + * @param name the new name + */ + void setName(String name); + + /** + * Gets the name format. + * + * @return the name format + */ + String getNameFormat(); + + /** + * Sets the name format. + * + * @param nameFormat the new name format + */ + void setNameFormat(String nameFormat); + + /** + * Gets the friendly name. + * + * @return the friendly name + */ + String getFriendlyName(); + + /** + * Sets the friendly name. + * + * @param friendlyName the new friendly name + */ + void setFriendlyName(String friendlyName); + + /** + * Gets the checks if is required. + * + * @return the checks if is required + */ + String isRequired(); + + /** + * Gets the checks if is required xs boolean. + * + * @return the checks if is required xs boolean + */ + String getIsRequiredXSBoolean(); + + /** + * Sets the checks if is required. + * + * @param newIsRequired the new checks if is required + */ + void setIsRequired(String newIsRequired); + + /** + * Gets the attribute values. + * + * @return the attribute values + */ + List getAttributeValues(); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java new file mode 100644 index 000000000..6e3da28c3 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/RequestedAttributes.java @@ -0,0 +1,51 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import java.util.List; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface RequestedAttributes. + * + * @author fjquevedo + */ +public interface RequestedAttributes extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "RequestedAttributes"; + + /** Default element name. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** Local name of the XSI type. */ + String TYPE_LOCAL_NAME = "RequestedAttributesType"; + + /** QName of the XSI type. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** + * Gets the attributes. + * + * @return the attributes + */ + List getAttributes(); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java new file mode 100644 index 000000000..cbedcf7d9 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLCore.java @@ -0,0 +1,98 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +/** + * The Enumeration SAMLCore. + * + * @author fjquevedo + */ + +public enum SAMLCore { + + /** The consent authentication request. */ + CONSENT_AUTHN_REQ("consentAuthnRequest"), + + /** The consent authentication response. */ + CONSENT_AUTHN_RES("consentAuthnResponse"), + + /** The FORC e_ auth n_ tag. */ + FORCE_AUTHN_TAG("forceAuthN"), + + /** The I s_ passiv e_ tag. */ + IS_PASSIVE_TAG("isPassive"), + + /** The FORMA t_ entity. */ + FORMAT_ENTITY("formatEntity"), + + /** The FRIENDLY name. */ + FRIENDLY_NAME("friendlyName"), + + /** The IS_REQUIRED AN ATTRIBUTE */ + IS_REQUIRED("isRequired"), + + /** The PRO t_ bindin g_ tag. */ + PROT_BINDING_TAG("protocolBinding"), + + /** The ASSER t_ con s_ tag. */ + ASSERT_CONS_TAG("assertionConsumerServiceURL"), + + /** The REQUESTE r_ tag. */ + REQUESTER_TAG("requester"), + + /** The RESPONDE r_ tag. */ + RESPONDER_TAG("responder"), + + /** The STOR k10_ ns. */ + STORK10_NS("urn:eu:stork:names:tc:STORK:1.0:assertion"), + + /** The STOR k10 p_ ns. */ + STORK10P_NS("urn:eu:stork:names:tc:STORK:1.0:protocol"), + + /** The STOR k10_ prefix. */ + STORK10_PREFIX("stork"), + + /** The STOR k10 p_ prefix. */ + STORK10P_PREFIX("storkp"), + + /** The STOR k10_ bas e_ uri. */ + STORK10_BASE_URI("http://www.stork.gov.eu/1.0/"), + + /** The ON e_ tim e_ use. */ + ONE_TIME_USE("oneTimeUse"); + + /** The value. */ + private String value; + + /** + * Instantiates a new sAML core. + * + * @param fullName the full name + */ + private SAMLCore(final String fullName) { + this.value = fullName; + } + + /** + * Gets the value. + * + * @return the value + */ + public String getValue() { + return value; + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java new file mode 100644 index 000000000..e846983d8 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SAMLEngineSignI.java @@ -0,0 +1,88 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import java.security.KeyStore; +import java.security.cert.X509Certificate; + +import org.opensaml.common.SAMLObject; +import org.opensaml.common.SignableSAMLObject; + +import eu.stork.peps.exceptions.SAMLEngineException; + +/** + * The Interface SAMLEngineSignI. + * + * @author fjquevedo + */ +public interface SAMLEngineSignI { + + /** + * Sign. + * + * @param tokenSaml the token SAML + * + * @return the sAML object + * + * @throws SAMLEngineException the SAML engine exception + */ + SAMLObject sign(SignableSAMLObject tokenSaml) throws SAMLEngineException; + + /** + * Gets the certificate. + * + * @return the certificate + */ + X509Certificate getCertificate(); + + /** + * Gets the trustStore used when validating SAMLTokens + * + * @return the trustStore + * + */ + KeyStore getTrustStore(); + + /** + * Validate signature. + * + * @param tokenSaml the token SAML + * + * @return the sAML object + * + * @throws SAMLEngineException the SAML engine exception + */ + SAMLObject validateSignature(SignableSAMLObject tokenSaml) + throws SAMLEngineException; + + /** + * Initialize the signature module. + * + * @param fileConf the configuration file. + * + * @throws SAMLEngineException the STORKSAML engine runtime + * exception + */ + void init(String fileConf) throws SAMLEngineException; + + /** + * Load cryptographic service provider. + * + * @throws SAMLEngineException the SAML engine exception + */ + void loadCryptServiceProvider() throws SAMLEngineException; + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java new file mode 100644 index 000000000..9510bf790 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPApplication.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface SPApplication. + * + * @author fjquevedo + */ +public interface SPApplication extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "spApplication"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "spApplicationType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** + * Gets the service provider application. + * + * @return the service provider application + */ + String getSPApplication(); + + /** + * Sets the service provider application. + * + * @param spApplication the new service provider application + */ + void setSPApplication(String spApplication); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java new file mode 100644 index 000000000..829ace878 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPCountry.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface SPCountry. + * + * @author fjquevedo + */ +public interface SPCountry extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "spCountry"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "spCountryType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** + * Gets the service provider country. + * + * @return the service provider country + */ + String getSPCountry(); + + /** + * Sets the service provider country. + * + * @param spCountry the new service provider country + */ + void setSPCountry(String spCountry); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPID.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPID.java new file mode 100644 index 000000000..bd13f6dbf --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPID.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDCrossBorderShare. + * @author iinigo + */ +public interface SPID extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "SPID"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "SPIDType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** + * Gets the SP ID. + * + * @return the SP ID + */ + String getSPID(); + + + /** + * Sets the SP ID. + * + * @param SPID the new SP ID + */ + void setSPID(String newSPID); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java new file mode 100644 index 000000000..bc870c2cc --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInformation.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDCrossBorderShare. + * @author iinigo + */ +public interface SPInformation extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "SPInformation"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "SPInformationType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** + * Gets the SP Id. + * + * @return the SP Id + */ + SPID getSPID(); + + + /** + * Sets the SP Id. + * + * @param newSPId the new SP Id + */ + void setSPID(SPID newSPID); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java new file mode 100644 index 000000000..add45023c --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPInstitution.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface EIDCrossBorderShare. + * + * @author fjquevedo + */ +public interface SPInstitution extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "spInstitution"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "spInstitutionType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** + * Gets the service provider institution. + * + * @return the service provider institution + */ + String getSPInstitution(); + + /** + * Sets the service provider institution. + * + * @param spInstitution the new service provider institution + */ + void setSPInstitution(String spInstitution); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java new file mode 100644 index 000000000..8322a0d47 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/SPSector.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface SPSector. + * + * @author fjquevedo + */ +public interface SPSector extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "spSector"; + + /** The Constant DEFAULT_ELEMENT_NAME. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** The Constant TYPE_LOCAL_NAME. */ + String TYPE_LOCAL_NAME = "spSectorType"; + + /** The Constant TYPE_NAME. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10_PREFIX.getValue()); + + /** + * Gets the service provider sector. + * + * @return the service provider sector + */ + String getSPSector(); + + /** + * Sets the service provider sector. + * + * @param spSector the new service provider sector + */ + void setSPSector(String spSector); +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java new file mode 100644 index 000000000..4c314ae68 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/STORKSAMLCore.java @@ -0,0 +1,508 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import java.util.Properties; + +import org.apache.commons.lang.StringUtils; +import org.opensaml.common.xml.SAMLConstants; +import org.opensaml.saml2.core.NameIDType; +import org.opensaml.saml2.core.RequestAbstractType; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.exceptions.SAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; + +/** + * The Class SAMLCore. + * + * @author fjquevedo + */ +public final class STORKSAMLCore { + + /** The Constant LOGGER. */ + private static final Logger LOGGER = LoggerFactory + .getLogger(STORKSAMLCore.class.getName()); + + /** The consent authentication request. */ + private String consentAuthnReq = null; + + /** The consent authentication response. */ + private String consentAuthnResp = null; + + /** The id cross border share. */ + private String eIDCrossBordShare = null; + + /** The e id cross sect share. */ + private String eIDCrossSectShare = null; + + /** The e id sector share. */ + private String eIDSectorShare = null; + + /** The format entity. */ + private String formatEntity = null; + + /** The friendly name. */ + private boolean friendlyName = false; + + /** The IP validation. */ + private boolean ipValidation = false; + + /** The one time use. */ + private boolean oneTimeUse = true; + + /** The protocol binding. */ + private String protocolBinding = null; + + /** The requester. */ + private String requester = null; + + + /** The responder. */ + private String responder = null; + + /** The SAML core properties. */ + private Properties samlCoreProp = null; + + /** The time not on or after. */ + private Integer timeNotOnOrAfter = null; + + /** The is required parameter. */ + private boolean isRequired = true; + + private static final String SAML_ENGINE_LITERAL = "SamlEngine.xml: "; + + /** + * Gets the isRequired. + * + * @return the isRequired + */ + public boolean isRequired() { + return isRequired; + } + + /** + * Sets the isRequired. + * + * @param isRequired the required. + */ + public void setRequired(boolean isRequired) { + this.isRequired = isRequired; + } + + /** + * Instantiates a new sAML core. + * + * @param instance the instance + */ + public STORKSAMLCore(final Properties instance) { + loadConfiguration(instance); + } + + /** + * Gets the consent. + * + * @return the consent + */ + public String getConsentAuthnRequest() { + return consentAuthnReq; + } + + /** + * Gets the consent authentication response. + * + * @return the consent authentication response. + */ + public String getConsentAuthnResp() { + return consentAuthnResp; + } + + /** + * Gets the consent authentication response. + * + * @return the consent authentication response + */ + public String getConsentAuthnResponse() { + return consentAuthnResp; + } + + /** + * Gets the format entity. + * + * @return the format entity + */ + public String getFormatEntity() { + return formatEntity; + } + + /** + * Gets the property. + * + * @param key the key + * + * @return the property + */ + public String getProperty(final String key) { + return samlCoreProp.getProperty(key); + } + + /** + * Gets the protocol binding. + * + * @return the protocol binding + */ + public String getProtocolBinding() { + return protocolBinding; + } + + /** + * Gets the requester. + * + * @return the requester + */ + public String getRequester() { + return requester; + } + + /** + * Gets the responder. + * + * @return the responder + */ + public String getResponder() { + return responder; + } + + /** + * Gets the time not on or after. + * + * @return the time not on or after + */ + public Integer getTimeNotOnOrAfter() { + return timeNotOnOrAfter; + } + + /** + * Checks if is e id cross border share. + * + * @return true, if is e id cross border share + */ + public String iseIDCrossBorderShare() { + return eIDCrossBordShare; + } + + /** + * Checks if is e id cross border share. + * + * @return true, if is e id cross border share + */ + public String iseIDCrossBordShare() { + return eIDCrossBordShare; + } + + /** + * Checks if is e id cross sector share. + * + * @return true, if is e id cross sector share + */ + public String iseIDCrossSectorShare() { + return eIDCrossSectShare; + } + + /** + * Checks if is e id cross sect share. + * + * @return true, if is e id cross sect share + */ + public String iseIDCrossSectShare() { + return eIDCrossSectShare; + } + + /** + * Checks if is e id sector share. + * + * @return true, if is e id sector share + */ + public String iseIDSectorShare() { + return eIDSectorShare; + } + + /** + * Checks if is friendly name. + * + * @return true, if checks if is friendly name + */ + public boolean isFriendlyName() { + return friendlyName; + } + + /** + * Checks if is IP validation. + * + * @return true, if is IP validation + */ + public boolean isIpValidation() { + return ipValidation; + } + + /** + * Checks if is one time use. + * + * @return true, if is one time use + */ + public boolean isOneTimeUse() { + return oneTimeUse; + } + + /** + * Method that loads the configuration file for the SAML Engine. + * + * @param instance the instance of the Engine properties. + */ + private void loadConfiguration(final Properties instance) { + + try { + LOGGER.info("SAMLCore: Loading SAMLEngine properties."); + + samlCoreProp = instance; + + final String parameter = samlCoreProp + .getProperty(SAMLCore.FORMAT_ENTITY.getValue()); + + if ("entity".equalsIgnoreCase(parameter)) { + formatEntity = NameIDType.ENTITY; + } + + friendlyName = Boolean.valueOf(samlCoreProp + .getProperty(SAMLCore.FRIENDLY_NAME.getValue())); + + String isRequiredValue = samlCoreProp. + getProperty(SAMLCore.IS_REQUIRED.getValue()); + if (isRequiredValue != null) { + isRequired = Boolean.valueOf(isRequiredValue); + } + + eIDSectorShare = samlCoreProp + .getProperty("eIDSectorShare"); + eIDCrossSectShare = samlCoreProp + .getProperty("eIDCrossSectorShare"); + eIDCrossBordShare = samlCoreProp + .getProperty("eIDCrossBorderShare"); + + ipValidation = Boolean.valueOf(samlCoreProp + .getProperty("ipAddrValidation")); + + final String oneTimeUseProp = samlCoreProp + .getProperty(SAMLCore.ONE_TIME_USE.getValue()); + + if (StringUtils.isNotBlank(oneTimeUseProp)) { + oneTimeUse = Boolean.valueOf(oneTimeUseProp); + } + + // Protocol Binding + loadProtocolBiding(); + + // Consent Authentication Request + consentAuthnReq = samlCoreProp + .getProperty(SAMLCore.CONSENT_AUTHN_REQ.getValue()); + + if ("unspecified".equalsIgnoreCase(consentAuthnReq)) { + consentAuthnReq = RequestAbstractType.UNSPECIFIED_CONSENT; + } + + loadConsentAuthResp(); + + timeNotOnOrAfter = Integer.valueOf(samlCoreProp + .getProperty("timeNotOnOrAfter")); + + if (timeNotOnOrAfter.intValue() < 0) { + LOGGER.error(SAML_ENGINE_LITERAL + "timeNotOnOrAfter" + + " is negative number."); + + throw new SAMLEngineException(SAML_ENGINE_LITERAL + + "timeNotOnOrAfter" + " is negative number."); + } + + requester = samlCoreProp.getProperty(SAMLCore.REQUESTER_TAG.getValue()); + responder = samlCoreProp.getProperty(SAMLCore.RESPONDER_TAG.getValue()); + + } catch (SAMLEngineException e) { + LOGGER.error("SAMLCore: error loadConfiguration. ", e); + throw new STORKSAMLEngineRuntimeException(e); + } catch (RuntimeException e) { + LOGGER.error("SAMLCore: error loadConfiguration. ", e); + throw new STORKSAMLEngineRuntimeException(e); + } + } + + /** + * Load consent authentication response. + */ + private void loadConsentAuthResp() { + // Consent Authentication Response + consentAuthnResp = samlCoreProp + .getProperty(SAMLCore.CONSENT_AUTHN_RES.getValue()); + + if ("obtained".equalsIgnoreCase(consentAuthnResp)) { + consentAuthnResp = RequestAbstractType.OBTAINED_CONSENT; + } else if ("prior".equalsIgnoreCase(consentAuthnResp)) { + consentAuthnResp = RequestAbstractType.PRIOR_CONSENT; + } else if ("curent-implicit".equalsIgnoreCase(consentAuthnResp)) { + consentAuthnResp = + "urn:oasis:names:tc:SAML:2.0:consent:current-implicit"; + } else if ("curent-explicit".equalsIgnoreCase(consentAuthnResp)) { + consentAuthnResp = + "urn:oasis:names:tc:SAML:2.0:consent:current-explicit"; + } else if ("unspecified".equalsIgnoreCase(consentAuthnResp)) { + consentAuthnResp = RequestAbstractType.UNSPECIFIED_CONSENT; + } + } + + /** + * Load protocol biding. + * + * @throws SAMLEngineException the SAML engine exception + */ + private void loadProtocolBiding() throws SAMLEngineException { + // Protocol Binding + protocolBinding = samlCoreProp.getProperty(SAMLCore.PROT_BINDING_TAG.getValue()); + + if (StringUtils.isBlank(protocolBinding)) { + LOGGER.error(SAML_ENGINE_LITERAL + SAMLCore.PROT_BINDING_TAG + + " it's mandatory."); + throw new SAMLEngineException(SAML_ENGINE_LITERAL + + SAMLCore.PROT_BINDING_TAG + " it's mandatory."); + } else if (protocolBinding.equalsIgnoreCase("HTTP-POST")) { + protocolBinding = SAMLConstants.SAML2_POST_BINDING_URI; + } else { + LOGGER.error(SAML_ENGINE_LITERAL + SAMLCore.PROT_BINDING_TAG + + " it's not supporting."); + + throw new SAMLEngineException(SAML_ENGINE_LITERAL + + SAMLCore.PROT_BINDING_TAG + " it's not supporting."); + } + } + + /** + * Sets the consent authentication response. + * + * @param newConsAuthnResp the new consent authentication response + */ + public void setConsentAuthnResp(final String newConsAuthnResp) { + this.consentAuthnResp = newConsAuthnResp; + } + + /** + * Sets an eID that can be shared outside of the Service Provider’s member state. + * + * @param newEIDCrossBord the new eid cross border share + */ + public void setEIDCrossBordShare(final String newEIDCrossBord) { + this.eIDCrossBordShare = newEIDCrossBord; + } + + /** + * Sets an eID that can be shared outside of the Service Provider’s sector. + * + * @param newEIDCrossSect the new eid cross sect share + */ + public void setEIDCrossSectShare(final String newEIDCrossSect) { + this.eIDCrossSectShare = newEIDCrossSect; + } + + /** + * Sets an eID that can be shared within the Service Provider’s sector. + * + * @param newEIDSectorShare the new eid sector share + */ + public void seteIDSectorShare(final String newEIDSectorShare) { + this.eIDSectorShare = newEIDSectorShare; + } + + /** + * Sets the format entity. + * + * @param newFormatEntity the new format entity + */ + public void setFormatEntity(final String newFormatEntity) { + this.formatEntity = newFormatEntity; + } + + /** + * Sets the friendly name. + * + * @param newFriendlyName the new friendly name + */ + public void setFriendlyName(final boolean newFriendlyName) { + this.friendlyName = newFriendlyName; + } + + /** + * Sets the IP validation. + * + * @param newIpValidation the new IP validation + */ + public void setIpValidation(final boolean newIpValidation) { + this.ipValidation = newIpValidation; + } + + /** + * Sets the one time use. + * + * @param newOneTimeUse the new one time use + */ + public void setOneTimeUse(final boolean newOneTimeUse) { + this.oneTimeUse = newOneTimeUse; + } + + /** + * Sets the protocol binding. + * + * @param newProtBinding the new protocol binding + */ + public void setProtocolBinding(final String newProtBinding) { + this.protocolBinding = newProtBinding; + } + + /** + * Sets the requester. + * + * @param newRequester the new requester + */ + public void setRequester(final String newRequester) { + this.requester = newRequester; + } + + /** + * Sets the responder. + * + * @param newResponder the new responder + */ + public void setResponder(final String newResponder) { + this.responder = newResponder; + } + + /** + * Sets the time not on or after. + * + * @param newTimeNotOnOrAft the new time not on or after + */ + public void setTimeNotOnOrAfter(final Integer newTimeNotOnOrAft) { + this.timeNotOnOrAfter = newTimeNotOnOrAft; + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java new file mode 100644 index 000000000..6ee9e0e1b --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/VIDPAuthenticationAttributes.java @@ -0,0 +1,72 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core; + +import javax.xml.namespace.QName; + +import org.opensaml.common.SAMLObject; + +/** + * The Interface VIDPAuthenticationAttributes. + * + * @author fjquevedo + */ +public interface VIDPAuthenticationAttributes extends SAMLObject { + + /** The Constant DEFAULT_ELEMENT_LOCAL_NAME. */ + String DEF_LOCAL_NAME = "VIDPAuthenticationAttributes"; + + /** Default element name. */ + QName DEF_ELEMENT_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), DEF_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + /** Local name of the XSI type. */ + String TYPE_LOCAL_NAME = "VIDPAuthenticationAttributesType"; + + /** QName of the XSI type. */ + QName TYPE_NAME = new QName(SAMLCore.STORK10P_NS.getValue(), TYPE_LOCAL_NAME, + SAMLCore.STORK10P_PREFIX.getValue()); + + + /** + * Gets the citizen country code. + * + * @return the citizen country code + */ + CitizenCountryCode getCitizenCountryCode(); + + /** + * Sets the citizen country code. + * + * @param newCitizenCountryCode the new citizen country code + */ + void setCitizenCountryCode(CitizenCountryCode newCitizenCountryCode); + + /** + * Gets the SP information + * + * @return the SP information + */ + SPInformation getSPInformation(); + + /** + * Sets the SP information + * + * @param newSPInformation the new SPInformation + */ + void setSPInformation(SPInformation newSPInformation); + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java new file mode 100644 index 000000000..2d9039d4c --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesBuilder.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.AuthenticationAttributes; + +/** + * The Class AuthenticationAttributesBuilder. + * + * @author fjquevedo + */ +public class AuthenticationAttributesBuilder extends + AbstractSAMLObjectBuilder { + + + + /** + * Builds the object. + * + * @return the authentication attributes + */ + public final AuthenticationAttributes buildObject() { + return buildObject(AuthenticationAttributes.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace URI + * @param localName the local name + * @param namespacePrefix the namespace prefix + * + * @return the authentication attributes + */ + public final AuthenticationAttributes buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new AuthenticationAttributesImpl(namespaceURI, localName, + namespacePrefix); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java new file mode 100644 index 000000000..e0de20f7d --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesImpl.java @@ -0,0 +1,109 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opensaml.common.impl.AbstractSignableSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.AuthenticationAttributes; +import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class AuthenticationAttributesImpl. + * + * @author fjquevedo + */ +public final class AuthenticationAttributesImpl extends AbstractSignableSAMLObject implements +AuthenticationAttributes { + + private static final Logger LOGGER = LoggerFactory.getLogger(AuthenticationAttributesImpl.class.getName()); + + /** The indexed children. */ + private VIDPAuthenticationAttributes vIDPAuthenAttr; + + /** + * Instantiates a new authentication attributes implementation. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected AuthenticationAttributesImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + * + */ + public List getOrderedChildren() { + final ArrayList children = new ArrayList(); + + children.add(vIDPAuthenAttr); + + if (getSignature() != null) { + children.add(getSignature()); + } + + return Collections.unmodifiableList(children); + } + + /** + * Gets the signature reference id. + * + * @return the signature reference id + * + */ + public String getSignatureReferenceID() { + return null; + } + + /** + * Gets the vidp authentication attributes. + * + * @return the VIDP authentication attributes + * + */ + public VIDPAuthenticationAttributes getVIDPAuthenticationAttributes() { + return vIDPAuthenAttr; + } + + /** + * Sets the vidp authentication attributes. + * + * @param newVIDPAuthenAttr the new vidp authen attr + * + */ + public void setVIDPAuthenticationAttributes( + final VIDPAuthenticationAttributes newVIDPAuthenAttr) { + vIDPAuthenAttr = prepareForAssignment(this.vIDPAuthenAttr, newVIDPAuthenAttr); + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java new file mode 100644 index 000000000..d31c052fe --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesMarshaller.java @@ -0,0 +1,27 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; + +/** + * The Class AuthenticationAttributesMarshaller. + * + * @author fjquevedo + */ +public class AuthenticationAttributesMarshaller extends AbstractSAMLObjectMarshaller { + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java new file mode 100644 index 000000000..113214712 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/AuthenticationAttributesUnmarshaller.java @@ -0,0 +1,54 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.UnmarshallingException; + +import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; + +import eu.stork.peps.auth.engine.core.AuthenticationAttributes; + +/** + * The Class AuthenticationAttributesUnmarshaller. + * + * @author fjquevedo + */ +public class AuthenticationAttributesUnmarshaller extends +AbstractSAMLObjectUnmarshaller { + + /** + * Process child element. + * + * @param parentObject the parent object + * @param childObject the child object + * + * @throws UnmarshallingException the unmarshalling exception + * + */ + protected final void processChildElement(final XMLObject parentObject, + final XMLObject childObject) throws UnmarshallingException { + final AuthenticationAttributes attrStatement = (AuthenticationAttributes) parentObject; + + if (childObject instanceof VIDPAuthenticationAttributes) { + attrStatement.setVIDPAuthenticationAttributes((VIDPAuthenticationAttributes) childObject); + } else { + super.processChildElement(parentObject, childObject); + } + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java new file mode 100644 index 000000000..64651691f --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeBuilder.java @@ -0,0 +1,50 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.CitizenCountryCode; + +/** + * The Class CitizenCountryCodeBuilder. + * + * @author fjquevedo + */ +public class CitizenCountryCodeBuilder extends AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the citizen country code + */ + public final CitizenCountryCode buildObject() { + return buildObject(CitizenCountryCode.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the citizen country code + */ + public final CitizenCountryCode buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new CitizenCountryCodeImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java new file mode 100644 index 000000000..374398cf1 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeImpl.java @@ -0,0 +1,82 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.CitizenCountryCode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class CitizenCountryCodeImpl. + * + * @author fjquevedo + */ +public class CitizenCountryCodeImpl extends AbstractSAMLObject implements CitizenCountryCode { + + private static final Logger LOGGER = LoggerFactory.getLogger(CitizenCountryCodeImpl.class.getName()); + /** The citizen country code. */ + private String citizenCountryCode; + + /** + * Instantiates a new sP country impl. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected CitizenCountryCodeImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the citizen country code. + * + * @return the citizen country code + */ + public final String getCitizenCountryCode() { + return citizenCountryCode; + } + + /** + * Sets the citizen country code. + * + * @param newCitizenCountryCode the new citizen country code + */ + public final void setCitizenCountryCode(final String newCitizenCountryCode) { + this.citizenCountryCode = prepareForAssignment(this.citizenCountryCode, newCitizenCountryCode); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java new file mode 100644 index 000000000..decae04c5 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeMarshaller.java @@ -0,0 +1,45 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.CitizenCountryCode; + +/** + * The Class SPCountryMarshaller. + * + * @author fjquevedo + */ +public class CitizenCountryCodeMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final CitizenCountryCode citizenCountryCode = (CitizenCountryCode) samlObject; + XMLHelper.appendTextContent(domElement, citizenCountryCode.getCitizenCountryCode()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java new file mode 100644 index 000000000..93132b508 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CitizenCountryCodeUnmarshaller.java @@ -0,0 +1,41 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.CitizenCountryCode; + +/** + * The Class CitizenCountryCodeUnmarshaller. + * + * @author fjquevedo + */ +public class CitizenCountryCodeUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final CitizenCountryCode citizenCountryCode = (CitizenCountryCode) samlObject; + citizenCountryCode.setCitizenCountryCode(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java new file mode 100644 index 000000000..48da2a24b --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryBuilder.java @@ -0,0 +1,26 @@ +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; +import org.opensaml.common.xml.SAMLConstants; +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; + +public class CustomAttributeQueryBuilder extends AbstractSAMLObjectBuilder { + /** + * Constructor. + */ + public CustomAttributeQueryBuilder() { + + } + + /** {@inheritDoc} */ + public CustomAttributeQuery buildObject() { + return buildObject(SAMLConstants.SAML20P_NS, CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME, + SAMLConstants.SAML20P_PREFIX); + } + + /** {@inheritDoc} */ + public CustomAttributeQuery buildObject(String namespaceURI, String localName, String namespacePrefix) { + return new CustomAttributeQueryImpl(namespaceURI, localName, namespacePrefix); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java new file mode 100644 index 000000000..cbf9221eb --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryImpl.java @@ -0,0 +1,65 @@ +package eu.stork.peps.auth.engine.core.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opensaml.saml2.core.Attribute; +import org.opensaml.saml2.core.impl.SubjectQueryImpl; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.util.XMLObjectChildrenList; + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; + + +public class CustomAttributeQueryImpl extends SubjectQueryImpl implements CustomAttributeQuery { + /** Attribute child elements. */ + private final XMLObjectChildrenList attributes; + private String serviceURL; + + /** + * Constructor. + * + * @param namespaceURI the namespace the element is in + * @param elementLocalName the local name of the XML element this Object represents + * @param namespacePrefix the prefix for the given namespace + */ + protected CustomAttributeQueryImpl(String namespaceURI, String elementLocalName, String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + attributes = new XMLObjectChildrenList(this); + } + + /** {@inheritDoc} */ + public List getAttributes() { + return attributes; + } + + /** {@inheritDoc} */ + public List getOrderedChildren() { + ArrayList children = new ArrayList(); + + if (super.getOrderedChildren() != null) { + children.addAll(super.getOrderedChildren()); + } + children.addAll(attributes); + + if (children.size() == 0) { + return null; + } + + return Collections.unmodifiableList(children); + } + + @Override + public String getAssertionConsumerServiceURL() { + // TODO Auto-generated method stub + return this.serviceURL; + } + + @Override + public void setAssertionConsumerServiceURL(String newServiceUrl) { + // TODO Auto-generated method stub + this.serviceURL = newServiceUrl; + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java new file mode 100644 index 000000000..7f2013ca8 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryMarshaller.java @@ -0,0 +1,50 @@ +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.Configuration; +import org.opensaml.saml2.core.RequestAbstractType; +import org.opensaml.saml2.core.impl.SubjectQueryMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.CustomRequestAbstractType; + +public class CustomAttributeQueryMarshaller extends SubjectQueryMarshaller { + + /** {@inheritDoc} */ + protected void marshallAttributes(XMLObject samlObject, Element domElement) throws MarshallingException { + CustomRequestAbstractType req = (CustomRequestAbstractType) samlObject; + + if (req.getVersion() != null) { + domElement.setAttributeNS(null, RequestAbstractType.VERSION_ATTRIB_NAME, req.getVersion().toString()); + } + + if (req.getID() != null) { + domElement.setAttributeNS(null, RequestAbstractType.ID_ATTRIB_NAME, req.getID()); + domElement.setIdAttributeNS(null, RequestAbstractType.ID_ATTRIB_NAME, true); + } + + if (req.getVersion() != null) { + domElement.setAttributeNS(null, RequestAbstractType.VERSION_ATTRIB_NAME, req.getVersion().toString()); + } + + if (req.getIssueInstant() != null) { + String iiStr = Configuration.getSAMLDateFormatter().print(req.getIssueInstant()); + domElement.setAttributeNS(null, RequestAbstractType.ISSUE_INSTANT_ATTRIB_NAME, iiStr); + } + + if (req.getDestination() != null) { + domElement.setAttributeNS(null, RequestAbstractType.DESTINATION_ATTRIB_NAME, req.getDestination()); + } + + if (req.getAssertionConsumerServiceURL() != null) { + domElement.setAttributeNS(null, CustomRequestAbstractType.ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME, req.getAssertionConsumerServiceURL()); + } + + if (req.getConsent() != null) { + domElement.setAttributeNS(null, RequestAbstractType.CONSENT_ATTRIB_NAME, req.getConsent()); + } + } + + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java new file mode 100644 index 000000000..e351b65b0 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/CustomAttributeQueryUnmarshaller.java @@ -0,0 +1,114 @@ +package eu.stork.peps.auth.engine.core.impl; + +import org.joda.time.DateTime; +import org.joda.time.chrono.ISOChronology; +import org.opensaml.common.SAMLVersion; +import org.opensaml.common.xml.SAMLConstants; +import org.opensaml.saml2.core.Attribute; +import org.opensaml.saml2.core.RequestAbstractType; +import org.opensaml.saml2.core.impl.SubjectQueryUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.AbstractXMLObjectUnmarshaller; +import org.opensaml.xml.io.UnmarshallingException; +import org.opensaml.xml.util.DatatypeHelper; +import org.opensaml.xml.util.XMLHelper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Attr; +import org.w3c.dom.Element; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Node; +import org.w3c.dom.Text; + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.CustomRequestAbstractType; + +public class CustomAttributeQueryUnmarshaller extends SubjectQueryUnmarshaller { + + private final Logger log = LoggerFactory.getLogger(AbstractXMLObjectUnmarshaller.class); + /** {@inheritDoc} */ + protected void processChildElement(XMLObject parentSAMLObject, XMLObject childSAMLObject) + throws UnmarshallingException { + CustomAttributeQuery query = (CustomAttributeQuery) parentSAMLObject; + + if (childSAMLObject instanceof Attribute) { + query.getAttributes().add((Attribute) childSAMLObject); + } else { + super.processChildElement(parentSAMLObject, childSAMLObject); + } + } + + /** {@inheritDoc} */ + public XMLObject unmarshall(Element domElement) throws UnmarshallingException { + if (log.isTraceEnabled()) { + log.trace("Starting to unmarshall DOM element {}", XMLHelper.getNodeQName(domElement)); + } + + checkElementIsTarget(domElement); + + //String namespaceURI, String elementLocalName, String namespacePrefix + XMLObject xmlObject = new CustomAttributeQueryImpl(SAMLConstants.SAML20P_NS, CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME, + SAMLConstants.SAML20P_PREFIX); + + if (log.isTraceEnabled()) { + log.trace("Unmarshalling attributes of DOM Element {}", XMLHelper.getNodeQName(domElement)); + } + + NamedNodeMap attributes = domElement.getAttributes(); + Node attribute; + for (int i = 0; i < attributes.getLength(); i++) { + attribute = attributes.item(i); + + // These should allows be attribute nodes, but just in case... + if (attribute.getNodeType() == Node.ATTRIBUTE_NODE) { + unmarshallAttribute(xmlObject, (Attr) attribute); + } + } + + if (log.isTraceEnabled()) { + log.trace("Unmarshalling other child nodes of DOM Element {}", XMLHelper.getNodeQName(domElement)); + } + + Node childNode = domElement.getFirstChild(); + while (childNode != null) { + + if (childNode.getNodeType() == Node.ATTRIBUTE_NODE) { + unmarshallAttribute(xmlObject, (Attr) childNode); + } else if (childNode.getNodeType() == Node.ELEMENT_NODE) { + unmarshallChildElement(xmlObject, (Element) childNode); + } else if (childNode.getNodeType() == Node.TEXT_NODE + || childNode.getNodeType() == Node.CDATA_SECTION_NODE) { + unmarshallTextContent(xmlObject, (Text) childNode); + } + + childNode = childNode.getNextSibling(); + } + + xmlObject.setDOM(domElement); + return xmlObject; + } + + /** {@inheritDoc} */ + protected void processAttribute(XMLObject samlObject, Attr attribute) throws UnmarshallingException { + CustomRequestAbstractType req = (CustomRequestAbstractType) samlObject; + + if (attribute.getLocalName().equals(RequestAbstractType.VERSION_ATTRIB_NAME)) { + req.setVersion(SAMLVersion.valueOf(attribute.getValue())); + } else if (attribute.getLocalName().equals(RequestAbstractType.ID_ATTRIB_NAME)) { + req.setID(attribute.getValue()); + attribute.getOwnerElement().setIdAttributeNode(attribute, true); + } else if (attribute.getLocalName().equals(RequestAbstractType.ISSUE_INSTANT_ATTRIB_NAME) + && !DatatypeHelper.isEmpty(attribute.getValue())) { + req.setIssueInstant(new DateTime(attribute.getValue(), ISOChronology.getInstanceUTC())); + } else if (attribute.getLocalName().equals(RequestAbstractType.DESTINATION_ATTRIB_NAME)) { + req.setDestination(attribute.getValue()); + } else if (attribute.getLocalName().equals(RequestAbstractType.CONSENT_ATTRIB_NAME)) { + req.setConsent(attribute.getValue()); + } else if (attribute.getLocalName().equals(CustomRequestAbstractType.ASSERTION_CONSUMER_SERVICE_URL_ATTRIB_NAME)) { + req.setAssertionConsumerServiceURL(attribute.getValue()); + }else { + super.processAttribute(samlObject, attribute); + } + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java new file mode 100644 index 000000000..3f4fc633d --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareBuilder.java @@ -0,0 +1,52 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; + +/** + * The Class EIDCrossBorderShareBuilder. + * + * @author fjquevedo + */ +public class EIDCrossBorderShareBuilder extends AbstractSAMLObjectBuilder { + + + /** + * Builds the object. + * + * @return the identifier cross border share + */ + public final EIDCrossBorderShare buildObject() { + return buildObject(EIDCrossBorderShare.DEF_ELEMENT_NAME); + } + + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the eID cross border share + */ + public final EIDCrossBorderShare buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new EIDCrossBorderShareImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java new file mode 100644 index 000000000..3827f5085 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareImpl.java @@ -0,0 +1,87 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class EIDCrossBorderShareImpl. + * + * @author fjquevedo + */ +public class EIDCrossBorderShareImpl extends AbstractSAMLObject implements + EIDCrossBorderShare { + + private static final Logger LOGGER = LoggerFactory.getLogger(EIDCrossBorderShareImpl.class.getName()); + /** The citizen country code. */ + private String eIDCrossBorderShare; + + /** + * Instantiates a new eID cross border share implementation. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected EIDCrossBorderShareImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + + + /** + * Gets the eID cross border share. + * + * @return the eID cross border share + */ + public final String getEIDCrossBorderShare() { + return eIDCrossBorderShare; + } + + + /** + * Sets the eID cross border share. + * + * @param newEIDCrossBorderShare the new eID cross border share + */ + public final void setEIDCrossBorderShare(String newEIDCrossBorderShare) { + this.eIDCrossBorderShare = prepareForAssignment(this.eIDCrossBorderShare, newEIDCrossBorderShare); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + * {@inheritDoc} + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java new file mode 100644 index 000000000..c5e113013 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareMarshaller.java @@ -0,0 +1,47 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; + + +/** + * The Class EIDCrossBorderShareMarshaller. + * + * @author fjquevedo + */ +public class EIDCrossBorderShareMarshaller extends AbstractSAMLObjectMarshaller { + + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) samlObject; + XMLHelper.appendTextContent(domElement, crossBorderShare.getEIDCrossBorderShare()); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java new file mode 100644 index 000000000..e74bee6ca --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossBorderShareUnmarshaller.java @@ -0,0 +1,43 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.EIDCrossBorderShare; + +/** + * The Class EIDCrossBorderShareUnmarshaller. + * + * @author fjquevedo + */ +public class EIDCrossBorderShareUnmarshaller extends + AbstractSAMLObjectUnmarshaller { + + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final EIDCrossBorderShare crossBorderShare = (EIDCrossBorderShare) samlObject; + crossBorderShare.setEIDCrossBorderShare(elementContent); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java new file mode 100644 index 000000000..5e91e18fd --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareBuilder.java @@ -0,0 +1,52 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; + +/** + * The Class EIDCrossSectorShareBuilder. + * + * @author fjquevedo + */ +public class EIDCrossSectorShareBuilder extends + AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the eID cross sector share + */ + public final EIDCrossSectorShare buildObject() { + return buildObject(EIDCrossSectorShare.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the eID cross sector share implementation + */ + public final EIDCrossSectorShareImpl buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new EIDCrossSectorShareImpl(namespaceURI, localName, + namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java new file mode 100644 index 000000000..7b2ad3dbd --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareImpl.java @@ -0,0 +1,89 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; + +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * The Class EIDCrossSectorShareImpl. + * + * @author fjquevedo + */ +public class EIDCrossSectorShareImpl extends AbstractSAMLObject implements + EIDCrossSectorShare { + + private static final Logger LOGGER = LoggerFactory.getLogger(EIDCrossSectorShareImpl.class.getName()); + /** The citizen country code. */ + private String eIDCrossSectorShare; + + + /** + * Instantiates a new eID cross sector share implementation. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected EIDCrossSectorShareImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + + + /** + * Gets the eID cross sector share. + * + * @return the eID cross sector share + */ + public final String getEIDCrossSectorShare() { + return eIDCrossSectorShare; + } + + + /** + * Sets the eID cross sector share. + * + * @param newEIDCrossSectorShare the new eID cross sector share + */ + public final void setEIDCrossSectorShare(String newEIDCrossSectorShare) { + this.eIDCrossSectorShare = prepareForAssignment(this.eIDCrossSectorShare, newEIDCrossSectorShare); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java new file mode 100644 index 000000000..3ee9df698 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareMarshaller.java @@ -0,0 +1,46 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; + + +/** + * The Class EIDCrossSectorShareMarshaller. + * + * @author fjquevedo + */ +public class EIDCrossSectorShareMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) samlObject; + XMLHelper.appendTextContent(domElement, crossSectorShare.getEIDCrossSectorShare()); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java new file mode 100644 index 000000000..94c7689be --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDCrossSectorShareUnmarshaller.java @@ -0,0 +1,47 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.EIDCrossSectorShare; + +/** + * The Class EIDCrossSectorShareUnmarshaller. + * + * @author fjquevedo + */ +public class EIDCrossSectorShareUnmarshaller extends + AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void processElementContent(final XMLObject samlObject, + final String domElement) { + + final EIDCrossSectorShare crossSectorShare = (EIDCrossSectorShare) samlObject; + crossSectorShare.setEIDCrossSectorShare(domElement); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java new file mode 100644 index 000000000..230ff3ca4 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareBuilder.java @@ -0,0 +1,51 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.EIDSectorShare; + +/** + * The Class EIDSectorShareBuilder. + * + * @author fjquevedo + */ +public class EIDSectorShareBuilder extends + AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the eID sector share + */ + public final EIDSectorShare buildObject() { + return buildObject(EIDSectorShare.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the eID sector share + */ + public final EIDSectorShare buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new EIDSectorShareImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java new file mode 100644 index 000000000..9ed726a32 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareImpl.java @@ -0,0 +1,85 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.EIDSectorShare; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +// TODO: Auto-generated Javadoc +/** + * The Class EIDSectorShareImpl. + * + * @author fjquevedo + */ +public class EIDSectorShareImpl extends AbstractSAMLObject implements + EIDSectorShare { + + private static final Logger LOGGER = LoggerFactory.getLogger(EIDSectorShareImpl.class.getName()); + + /** The e id sector share. */ + private String eIDSectorShare; + /** + * Instantiates a new eID sector share implementation. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected EIDSectorShareImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + + /** + * Gets the eID sector share. + * + * @return the eID sector share + */ + public final String getEIDSectorShare() { + return eIDSectorShare; + } + + /** + * Sets the eID sector share. + * + * @param newEIDSectorShare the new eID sector share + */ + public final void setEIDSectorShare(String newEIDSectorShare) { + this.eIDSectorShare = prepareForAssignment(this.eIDSectorShare, newEIDSectorShare); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java new file mode 100644 index 000000000..0ce449cd1 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareMarshaller.java @@ -0,0 +1,46 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.saml2.core.impl.AbstractNameIDTypeMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.EIDSectorShare; + +/** + * The Class EIDSectorShareMarshaller. + * + * @author fjquevedo + */ +public class EIDSectorShareMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final EIDSectorShare sectorShare = (EIDSectorShare) samlObject; + XMLHelper.appendTextContent(domElement, sectorShare.getEIDSectorShare()); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java new file mode 100644 index 000000000..f7f00adb9 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/EIDSectorShareUnmarshaller.java @@ -0,0 +1,47 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.EIDSectorShare; + + +/** + * The Class EIDSectorShareUnmarshaller. + * + * @author fjquevedo + */ +public class EIDSectorShareUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void processElementContent(final XMLObject samlObject, + final String domElement) { + final EIDSectorShare sectorShare = (EIDSectorShare) samlObject; + sectorShare.setEIDSectorShare(domElement); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java new file mode 100644 index 000000000..41676931b --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeBuilder.java @@ -0,0 +1,52 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.QAAAttribute; + +/** + * The Class QAAAttributeBuilder. + * + * @author fjquevedo + */ +public class QAAAttributeBuilder extends + AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the quality authentication assurance object + */ + public final QAAAttribute buildObject() { + return buildObject(QAAAttribute.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the quality authentication assurance object + + */ + public final QAAAttribute buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new QAAAttributeImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java new file mode 100644 index 000000000..46f3bb402 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeImpl.java @@ -0,0 +1,84 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.QAAAttribute; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class QAAAttributeImpl. + * + * @author fjquevedo + */ +public class QAAAttributeImpl extends AbstractSAMLObject implements + QAAAttribute { + + private static final Logger LOGGER = LoggerFactory.getLogger(QAAAttributeImpl.class.getName()); + /** The quality authentication assurance level. */ + private String qaaLevel; + + /** + * Constructor. + * + * @param namespaceURI the namespace the element is in + * @param elementLocalName the local name of the XML element this Object + * represents + * @param namespacePrefix the prefix for the given namespace + */ + protected QAAAttributeImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the quality authentication assurance level. + * + * @return the quality authentication assurance level + */ + public final String getQaaLevel() { + return qaaLevel; + } + + /** + * Sets the quality authentication assurance level. + * + * @param newQaaLevel the new quality authentication assurance level + */ + public final void setQaaLevel(final String newQaaLevel) { + this.qaaLevel = prepareForAssignment(this.qaaLevel, newQaaLevel); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java new file mode 100644 index 000000000..000879368 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeMarshaller.java @@ -0,0 +1,45 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.QAAAttribute; + +/** + * The Class QAAAttributeMarshaller. + * + * @author fjquevedo + */ +public class QAAAttributeMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final QAAAttribute qaaAttribute = (QAAAttribute) samlObject; + XMLHelper.appendTextContent(domElement, qaaAttribute.getQaaLevel()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java new file mode 100644 index 000000000..8445e4eeb --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/QAAAttributeUnmarshaller.java @@ -0,0 +1,41 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.QAAAttribute; + +/** + * The Class QAAAttributeUnmarshaller. + * + * @author fjquevedo + */ +public class QAAAttributeUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final QAAAttribute qaaLevel = (QAAAttribute) samlObject; + qaaLevel.setQaaLevel(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java new file mode 100644 index 000000000..c9881c439 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeBuilder.java @@ -0,0 +1,54 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.RequestedAttribute; + +/** + * The Class RequestedAttributeBuilder. + * + * @author fjquevedo + */ +public class RequestedAttributeBuilder extends + AbstractSAMLObjectBuilder { + + + /** + * Builds the object. + * + * @return the requested attribute + */ + public final RequestedAttribute buildObject() { + return buildObject(RequestedAttribute.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the requested attribute + */ + public final RequestedAttribute buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new RequestedAttributeImpl(namespaceURI, localName, + namespacePrefix); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java new file mode 100644 index 000000000..ac2e8a3ee --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeImpl.java @@ -0,0 +1,220 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.schema.XSBooleanValue; +import org.opensaml.xml.util.AttributeMap; +import org.opensaml.xml.util.XMLObjectChildrenList; + +import eu.stork.peps.auth.engine.core.RequestedAttribute; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +// TODO: Auto-generated Javadoc +/** + * The Class RequestedAttributeImpl. + * + * @author fjquevedo + */ +public class RequestedAttributeImpl extends AbstractSAMLObject implements + RequestedAttribute { + + private static final Logger LOGGER = LoggerFactory.getLogger(RequestedAttributeImpl.class.getName()); + /** + * The attribute values. + */ + private final XMLObjectChildrenList attributeValues; + + /** + * The friendly name. + * + */ + private String friendlyName; + + /** + * The is required. + */ + private String isRequired; + + /** + * The name. + * + */ + private String name; + + /** + * The name format. + * + */ + private String nameFormat; + + /** + * The unknown attributes. + * + */ + private AttributeMap unknownAttributes; + + /** + * Instantiates a new requested attribute impl. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected RequestedAttributeImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + unknownAttributes = new AttributeMap(this); + attributeValues = new XMLObjectChildrenList(this); + } + + + /** + * Gets the attribute values. + * + * @return the attribute values + */ + public final List getAttributeValues() { + return attributeValues; + } + + /** + * Gets the friendly name. + * + * @return the friendly name. + */ + public final String getFriendlyName() { + return friendlyName; + } + + + /** + * Gets the checks if is required. + * + * @return the boolean if it's required. + */ + public final String isRequired() { + return isRequired; + } + + + /** + * Gets the is required xs boolean. + * + * @return the XSBoolean if it's required. + */ + public final String getIsRequiredXSBoolean() { + return isRequired; + } + + + /** + * Gets the name. + * + * @return the name + */ + public final String getName() { + return name; + } + + + /** + * Gets the name format. + * + * @return the name format. + */ + public final String getNameFormat() { + return nameFormat; + } + + /** + * Gets the ordered children. + * + * @return the list of XMLObject. + */ + public final List getOrderedChildren() { + final ArrayList children = new ArrayList(); + children.addAll(attributeValues); + return Collections.unmodifiableList(children); + } + + /** + * Gets the unknown attributes. + * + * @return the attribute map + */ + public final AttributeMap getUnknownAttributes() { + return unknownAttributes; + } + + /** + * Sets the friendly name. + * + * @param newFriendlyName the new friendly name format + */ + public final void setFriendlyName(final String newFriendlyName) { + this.friendlyName = prepareForAssignment(this.friendlyName, + newFriendlyName); + } + + /** + * Set new boolean value isRequired. + * @param newIsRequired then new value + */ + public final void setIsRequired(final String newIsRequired) { + isRequired = prepareForAssignment(this.isRequired, newIsRequired); + + } + + /** + * Sets the name. + * + * @param newName the new name + */ + public final void setName(final String newName) { + this.name = prepareForAssignment(this.name, newName); + } + + /** + * Sets the name format. + * + * @param newNameFormat the new name format + */ + public final void setNameFormat(final String newNameFormat) { + this.nameFormat = prepareForAssignment(this.nameFormat, newNameFormat); + } + + /** + * Sets the unknown attributes. + * + * @param newUnknownAttr the new unknown attributes + */ + public final void setUnknownAttributes(final AttributeMap newUnknownAttr) { + this.unknownAttributes = newUnknownAttr; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java new file mode 100644 index 000000000..1a14a118a --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeMarshaller.java @@ -0,0 +1,89 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.Map.Entry; + +import javax.xml.namespace.QName; + +import org.opensaml.Configuration; +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Attr; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.RequestedAttribute; + +/** + * The Class RequestedAttributeMarshaller. + * + * @author fjquevedo + */ +public class RequestedAttributeMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall attributes. + * + * @param samlElement the SAML element + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallAttributes(final XMLObject samlElement, + final Element domElement) throws MarshallingException { + final RequestedAttribute requestedAttr = (RequestedAttribute) samlElement; + + if (requestedAttr.getName() != null) { + domElement.setAttributeNS(null, + RequestedAttribute.NAME_ATTRIB_NAME, requestedAttr + .getName()); + } + + if (requestedAttr.getNameFormat() != null) { + domElement.setAttributeNS(null, + RequestedAttribute.NAME_FORMAT_ATTR, requestedAttr + .getNameFormat()); + } + + if (requestedAttr.getFriendlyName() != null) { + domElement.setAttributeNS(null, + RequestedAttribute.FRIENDLY_NAME_ATT, requestedAttr + .getFriendlyName()); + } + + if (requestedAttr.getIsRequiredXSBoolean() != null) { + domElement.setAttributeNS(null, + RequestedAttribute.IS_REQUIRED_ATTR, requestedAttr + .getIsRequiredXSBoolean().toString()); + } + + Attr attr; + for (Entry entry : requestedAttr.getUnknownAttributes() + .entrySet()) { + attr = XMLHelper.constructAttribute(domElement.getOwnerDocument(), + entry.getKey()); + attr.setValue(entry.getValue()); + domElement.setAttributeNodeNS(attr); + if (Configuration.isIDAttribute(entry.getKey()) + || requestedAttr.getUnknownAttributes().isIDAttribute( + entry.getKey())) { + attr.getOwnerElement().setIdAttributeNode(attr, true); + } + } + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java new file mode 100644 index 000000000..c07f852d9 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributeUnmarshaller.java @@ -0,0 +1,96 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import javax.xml.namespace.QName; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; + +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.UnmarshallingException; +import org.opensaml.xml.schema.XSBooleanValue; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Attr; + +import eu.stork.peps.auth.engine.core.RequestedAttribute; +import eu.stork.peps.auth.engine.core.SAMLCore; + +/** + * The Class RequestedAttributeUnmarshaller. + * + * @author fjquevedo + */ +public class RequestedAttributeUnmarshaller extends + AbstractSAMLObjectUnmarshaller { + + /** + * Process child element. + * + * @param parentSAMLObject parent SAMLObject + * @param childSAMLObject child SAMLObject + * + * @throws UnmarshallingException error at unmarshall XML object + */ + protected final void processChildElement(final XMLObject parentSAMLObject, + final XMLObject childSAMLObject) throws UnmarshallingException { + + final RequestedAttribute requestedAttr = (RequestedAttribute) parentSAMLObject; + + final QName childQName = childSAMLObject.getElementQName(); + if (childQName.getLocalPart().equals("AttributeValue") + && childQName.getNamespaceURI().equals(SAMLCore.STORK10_NS.getValue())) { + requestedAttr.getAttributeValues().add(childSAMLObject); + } else { + super.processChildElement(parentSAMLObject, childSAMLObject); + } + } + + /** + * Process attribute. + * + * @param samlObject the SAML object + * @param attribute the attribute + * @throws UnmarshallingException the unmarshalling exception + */ + protected final void processAttribute(final XMLObject samlObject, + final Attr attribute) throws UnmarshallingException { + + final RequestedAttribute requestedAttr = (RequestedAttribute) samlObject; + + if (attribute.getLocalName() + .equals(RequestedAttribute.NAME_ATTRIB_NAME)) { + requestedAttr.setName(attribute.getValue()); + } else if (attribute.getLocalName().equals( + RequestedAttribute.NAME_FORMAT_ATTR)) { + requestedAttr.setNameFormat(attribute.getValue()); + } else if (attribute.getLocalName().equals( + RequestedAttribute.FRIENDLY_NAME_ATT)) { + requestedAttr.setFriendlyName(attribute.getValue()); + } else if (attribute.getLocalName().equals( + RequestedAttribute.IS_REQUIRED_ATTR)) { + requestedAttr.setIsRequired(attribute + .getValue()); + + } else { + final QName attribQName = XMLHelper.getNodeQName(attribute); + if (attribute.isId()) { + requestedAttr.getUnknownAttributes().registerID(attribQName); + } + requestedAttr.getUnknownAttributes().put(attribQName, + attribute.getValue()); + } + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java new file mode 100644 index 000000000..d421c53d2 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesBuilder.java @@ -0,0 +1,54 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.RequestedAttributes; + +/** + * The Class RequestedAttributesBuilder. + * + * @author fjquevedo + */ +public class RequestedAttributesBuilder extends + AbstractSAMLObjectBuilder { + + + /** + * Builds the object. + * + * @return the requested attributes + */ + public final RequestedAttributes buildObject() { + return buildObject(RequestedAttributes.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the requested attributes + */ + public final RequestedAttributes buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new RequestedAttributesImpl(namespaceURI, localName, + namespacePrefix); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java new file mode 100644 index 000000000..0a5b37add --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesImpl.java @@ -0,0 +1,95 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.util.IndexedXMLObjectChildrenList; + +import eu.stork.peps.auth.engine.core.RequestedAttribute; +import eu.stork.peps.auth.engine.core.RequestedAttributes; + +/** + * The Class RequestedAttributesImpl. + * + * @author fjquevedo + */ +public class RequestedAttributesImpl extends AbstractSAMLObject implements + RequestedAttributes { + + /** + * Instantiates a new requested attributes implement. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected RequestedAttributesImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + indexedChildren = new IndexedXMLObjectChildrenList(this); + } + + /** The indexed children. */ + private final IndexedXMLObjectChildrenList indexedChildren; + + /** + * Gets the indexed children. + * + * @return the indexed children + */ + public final IndexedXMLObjectChildrenList getIndexedChildren() { + return indexedChildren; + } + + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + + final ArrayList children = new ArrayList(); + + children.addAll(indexedChildren); + + return Collections.unmodifiableList(children); + + } + + /** + * Gets the attributes. + * + * @return the attributes + * + * @see eu.stork.peps.auth.engine.core.RequestedAttributes#getAttributes() + */ + @SuppressWarnings("unchecked") + public final List getAttributes() { + return (List) indexedChildren + .subList(RequestedAttribute.DEF_ELEMENT_NAME); + } + + @Override + public int hashCode() { + throw new UnsupportedOperationException("hashCode method not implemented"); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java new file mode 100644 index 000000000..dfc42adf3 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesMarshaller.java @@ -0,0 +1,33 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; + +/** + * The Class RequestedAttributesMarshaller. + * + * @author fjquevedo + */ +public class RequestedAttributesMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Instantiates a new requested attributes marshaller. + */ + public RequestedAttributesMarshaller() { + super(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java new file mode 100644 index 000000000..41b3afa40 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/RequestedAttributesUnmarshaller.java @@ -0,0 +1,52 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.UnmarshallingException; + +import eu.stork.peps.auth.engine.core.RequestedAttribute; +import eu.stork.peps.auth.engine.core.RequestedAttributes; + +/** + * The Class RequestedAttributesUnmarshaller. + * + * @author fjquevedo + */ +public class RequestedAttributesUnmarshaller extends + AbstractSAMLObjectUnmarshaller { + + /** + * Process child element. + * + * @param parentObject the parent object + * @param childObject the child object + * + * @throws UnmarshallingException error in unmarshall + */ + protected final void processChildElement(final XMLObject parentObject, + final XMLObject childObject) throws UnmarshallingException { + final RequestedAttributes attrStatement = (RequestedAttributes) parentObject; + + if (childObject instanceof RequestedAttribute) { + attrStatement.getAttributes().add((RequestedAttribute) childObject); + } else { + super.processChildElement(parentObject, childObject); + } + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java new file mode 100644 index 000000000..a35c77936 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationBuilder.java @@ -0,0 +1,51 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SPApplication; + +/** + * The Class SPApplicationBuilder. + * + * @author fjquevedo + */ +public class SPApplicationBuilder extends + AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the service provider application + */ + public final SPApplication buildObject() { + return buildObject(SPApplication.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the service provider application + */ + public final SPApplication buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new SPApplicationImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java new file mode 100644 index 000000000..0a428a521 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationImpl.java @@ -0,0 +1,84 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPApplication; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class SPApplicationImpl. + * + * @author fjquevedo + */ +public class SPApplicationImpl extends AbstractSAMLObject implements + SPApplication { + + private static final Logger LOGGER = LoggerFactory.getLogger(SPApplicationImpl.class.getName()); + /** The service provider application. */ + private String spApplication; + + /** + * Instantiates a new service provider application. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected SPApplicationImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the service provider application. + * + * @return the service provider application + */ + public final String getSPApplication() { + return spApplication; + } + + /** + * Sets the service provider application. + * + * @param newSpApplication the new service provider application + */ + public final void setSPApplication(final String newSpApplication) { + this.spApplication = prepareForAssignment(this.spApplication, + newSpApplication); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java new file mode 100644 index 000000000..4866c3535 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationMarshaller.java @@ -0,0 +1,46 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.SPApplication; + +/** + * The Class SPApplicationMarshaller. + * + * @author fjquevedo + */ +public class SPApplicationMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final SPApplication spApplication = (SPApplication) samlObject; + XMLHelper.appendTextContent(domElement, spApplication + .getSPApplication()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java new file mode 100644 index 000000000..a28432a13 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPApplicationUnmarshaller.java @@ -0,0 +1,42 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPApplication; + + +/** + * The Class SPApplicationUnmarshaller. + * + * @author fjquevedo + */ +public class SPApplicationUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final SPApplication spApplication = (SPApplication) samlObject; + spApplication.setSPApplication(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java new file mode 100644 index 000000000..48ec92f49 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryBuilder.java @@ -0,0 +1,52 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SPCountry; + +/** + * The Class SPCountryBuilder. + * + * @author fjquevedo + */ +public class SPCountryBuilder extends AbstractSAMLObjectBuilder { + + + /** + * Builds the object SPCountry. + * + * @return the service provider country + */ + public final SPCountry buildObject() { + return buildObject(SPCountry.DEF_ELEMENT_NAME); + } + + + /** + * Builds the object SPCountry. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the service provider country + */ + public final SPCountry buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new SPCountryImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java new file mode 100644 index 000000000..40a1ac86a --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryImpl.java @@ -0,0 +1,82 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPCountry; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class SPCountryImpl. + * + * @author fjquevedo + */ +public class SPCountryImpl extends AbstractSAMLObject implements SPCountry { + + private static final Logger LOGGER = LoggerFactory.getLogger(SPCountryImpl.class.getName()); + /** The service provider country. */ + private String spCountry; + + /** + * Instantiates a new service provider country. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected SPCountryImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the service provider country. + * + * @return the service provider country + */ + public final String getSPCountry() { + return spCountry; + } + + /** + * Sets the service provider country. + * + * @param newSpCountry the new service provider country + */ + public final void setSPCountry(final String newSpCountry) { + this.spCountry = prepareForAssignment(this.spCountry, newSpCountry); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java new file mode 100644 index 000000000..e82634749 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryMarshaller.java @@ -0,0 +1,45 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.SPCountry; + +/** + * The Class SPCountryMarshaller. + * + * @author fjquevedo + */ +public class SPCountryMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final SPCountry spCountry = (SPCountry) samlObject; + XMLHelper.appendTextContent(domElement, spCountry.getSPCountry()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java new file mode 100644 index 000000000..deb695ac6 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPCountryUnmarshaller.java @@ -0,0 +1,42 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPCountry; + + +/** + * The Class SPCountryUnmarshaller. + * + * @author fjquevedo + */ +public class SPCountryUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final SPCountry spCountry = (SPCountry) samlObject; + spCountry.setSPCountry(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java new file mode 100644 index 000000000..b3640947b --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDBuilder.java @@ -0,0 +1,50 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SPID; + +/** + * The Class SPIDBuilder. + * + * @author iinigo + */ +public class SPIDBuilder extends AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the SP ID + */ + public final SPID buildObject() { + return buildObject(SPID.DEF_ELEMENT_NAME); + } + + /** + * Builds the object. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the citizen country code + */ + public final SPID buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new SPIDImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java new file mode 100644 index 000000000..68611997b --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDImpl.java @@ -0,0 +1,82 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPID; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class SPIDImpl. + * + * @author iinigo + */ +public class SPIDImpl extends AbstractSAMLObject implements SPID { + + private static final Logger LOGGER = LoggerFactory.getLogger(SPIDImpl.class.getName()); + /** The citizen country code. */ + private String spId; + + /** + * Instantiates a new sP country impl. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected SPIDImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the SP ID. + * + * @return the SP ID + */ + public final String getSPID() { + return spId; + } + + /** + * Sets the SP ID. + * + * @param newSPID the new SP ID + */ + public final void setSPID(final String newSPID) { + this.spId = prepareForAssignment(this.spId, newSPID); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java new file mode 100644 index 000000000..24389522e --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDMarshaller.java @@ -0,0 +1,45 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.SPID; + +/** + * The Class SPIDMarshaller. + * + * @author iinigo + */ +public class SPIDMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final SPID spid = (SPID) samlObject; + XMLHelper.appendTextContent(domElement, spid.getSPID()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java new file mode 100644 index 000000000..e4d230b94 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPIDUnmarshaller.java @@ -0,0 +1,41 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPID; + +/** + * The Class SPIDUnmarshaller. + * + * @author iinigo + */ +public class SPIDUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final SPID spid = (SPID) samlObject; + spid.setSPID(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java new file mode 100644 index 000000000..a6e1fe686 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationBuilder.java @@ -0,0 +1,41 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SAMLCore; +import eu.stork.peps.auth.engine.core.SPInformation; + +/** + * The Class SPInformation. + * + * @author iinigo + */ +public final class SPInformationBuilder extends AbstractSAMLObjectBuilder { + + + /** {@inheritDoc} */ + public SPInformation buildObject() { + return buildObject(SAMLCore.STORK10P_NS.getValue(), SPInformation.DEF_LOCAL_NAME, SAMLCore.STORK10P_PREFIX.getValue()); + } + + /** {@inheritDoc} */ + public SPInformation buildObject(final String namespaceURI, final String localName, final String namespacePrefix) { + return new SPInformationImpl(namespaceURI, localName, namespacePrefix); + } + +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java new file mode 100644 index 000000000..ff6e90999 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationImpl.java @@ -0,0 +1,110 @@ +/* + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opensaml.common.impl.AbstractSignableSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPID; +import eu.stork.peps.auth.engine.core.SPInformation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + +/** + * The Class SPInformationImpl. + * + * @author iinigo + */ +public final class SPInformationImpl extends AbstractSignableSAMLObject implements +SPInformation { + + private static final Logger LOGGER = LoggerFactory.getLogger(SPInformationImpl.class.getName()); + /** The citizen country code. */ + private SPID spId; + + + /** + * Instantiates a new requested attributes implement. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected SPInformationImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + + /** + * getSPId. + * + * @return the SP ID + */ + public SPID getSPID() { + return spId; + } + + /** + * Gets the ordered children. + * + * @return the ordered children + * + */ + public List getOrderedChildren() { + final ArrayList children = new ArrayList(); + + children.add(spId); + + if (getSignature() != null) { + children.add(getSignature()); + } + + return Collections.unmodifiableList(children); + + } + + /** + * Gets the signature reference id. + * + * @return the signature reference id + * + */ + public String getSignatureReferenceID() { + return null; + } + + /** + * Sets the SP Id. + * + * @param newSPId the new SP Id + * + */ + public void setSPID(SPID newSPId) { + this.spId = prepareForAssignment(this.spId, newSPId); + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java new file mode 100644 index 000000000..44845948c --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationMarshaller.java @@ -0,0 +1,33 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; + +/** + * The Class SPInformationMarshaller. + * + * @author iinigo + */ +public class SPInformationMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Instantiates a new SP Information marshaller. + */ + public SPInformationMarshaller() { + super(); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java new file mode 100644 index 000000000..414b93386 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInformationUnmarshaller.java @@ -0,0 +1,52 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.UnmarshallingException; + +import eu.stork.peps.auth.engine.core.SPID; +import eu.stork.peps.auth.engine.core.SPInformation; + +/** + * The Class SPInformationUnmarshaller. + * + * @author iinigo + */ +public class SPInformationUnmarshaller extends + AbstractSAMLObjectUnmarshaller { + + /** + * Process child element. + * + * @param parentObject the parent object + * @param childObject the child object + * + * @throws UnmarshallingException the unmarshalling exception + * + */ + protected final void processChildElement(final XMLObject parentObject, + final XMLObject childObject) throws UnmarshallingException { + final SPInformation spInformation = (SPInformation) parentObject; + + if (childObject instanceof SPID) { + spInformation.setSPID((SPID) childObject); + } else { + super.processChildElement(parentObject, childObject); + } + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java new file mode 100644 index 000000000..fe47cf99c --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionBuilder.java @@ -0,0 +1,51 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SPInstitution; + +/** + * The Class SPInstitutionBuilder. + * + * @author fjquevedo + */ +public class SPInstitutionBuilder extends + AbstractSAMLObjectBuilder { + + /** + * Builds the object. + * + * @return the service provider institution + */ + public final SPInstitution buildObject() { + return buildObject(SPInstitution.DEF_ELEMENT_NAME); + } + + /** + * Builds the object SPInstitution. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the service provider institution + */ + public final SPInstitution buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new SPInstitutionImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java new file mode 100644 index 000000000..38438613a --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionImpl.java @@ -0,0 +1,84 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPInstitution; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class SPInstitutionImpl. + * + * @author fjquevedo + */ +public class SPInstitutionImpl extends AbstractSAMLObject implements + SPInstitution { + + private static final Logger LOGGER = LoggerFactory.getLogger(SPInstitutionImpl.class.getName()); + /** The service provider institution. */ + private String spInstitution; + + /** + * Instantiates a new service provider institution. + * + * @param namespaceURI the namespace uri + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected SPInstitutionImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + /** + * Gets the service provider institution. + * + * @return the service provider institution + */ + public final String getSPInstitution() { + return spInstitution; + } + + /** + * Sets the service provider institution. + * + * @param newSpInstitution the new service provider institution + */ + public final void setSPInstitution(final String newSpInstitution) { + this.spInstitution = prepareForAssignment(this.spInstitution, + newSpInstitution); + } + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } + } diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java new file mode 100644 index 000000000..504a1f035 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionMarshaller.java @@ -0,0 +1,46 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.SPInstitution; + +/** + * The Class SPInstitutionMarshaller. + * + * @author fjquevedo + */ +public class SPInstitutionMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final SPInstitution spInstitution = (SPInstitution) samlObject; + XMLHelper.appendTextContent(domElement, spInstitution + .getSPInstitution()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java new file mode 100644 index 000000000..103d5f2b2 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPInstitutionUnmarshaller.java @@ -0,0 +1,41 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPInstitution; + +/** + * The Class SPInstitutionUnmarshaller. + * + * @author fjquevedo + */ +public class SPInstitutionUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final SPInstitution spInstitution = (SPInstitution) samlObject; + spInstitution.setSPInstitution(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java new file mode 100644 index 000000000..a691b9008 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorBuilder.java @@ -0,0 +1,50 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SPSector; + +/** + * The Class SPSectorBuilder. + * + * @author fjquevedo + */ +public class SPSectorBuilder extends AbstractSAMLObjectBuilder { + + /** + * Builds the object SPSector. + * + * @return the service provider sector. + */ + public final SPSector buildObject() { + return buildObject(SPSector.DEF_ELEMENT_NAME); + } + + /** + * Builds the object SPSector. + * + * @param namespaceURI the namespace uri + * @param localName the local name + * @param namespacePrefix the namespace prefix + * @return the service provider sector + */ + public final SPSector buildObject(final String namespaceURI, + final String localName, final String namespacePrefix) { + return new SPSectorImpl(namespaceURI, localName, namespacePrefix); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java new file mode 100644 index 000000000..4ac822876 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorImpl.java @@ -0,0 +1,84 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.List; + +import org.opensaml.common.impl.AbstractSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPSector; + + +/** + * The Class SPSectorImpl. + * + * @author fjquevedo + */ +public class SPSectorImpl extends AbstractSAMLObject implements SPSector { + + /** The service provider sector. */ + private String spSector; + + /** + * Instantiates a new Service provider sector implementation. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected SPSectorImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + + /** + * Gets the service provider sector. + * + * @return the SP sector + * + * @see eu.stork.peps.auth.engine.core.SPSector#getSPSector() + */ + public final String getSPSector() { + return spSector; + } + + + /** + * Sets the service provider sector. + * + * @param newSpSector the new service provider sector + */ + public final void setSPSector(final String newSpSector) { + this.spSector = prepareForAssignment(this.spSector, newSpSector); + } + + + /** + * Gets the ordered children. + * + * @return the ordered children + */ + public final List getOrderedChildren() { + return null; + } + + @Override + public int hashCode() { + throw new UnsupportedOperationException("hashCode method not implemented"); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java new file mode 100644 index 000000000..c5331e8f4 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorMarshaller.java @@ -0,0 +1,45 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.util.XMLHelper; +import org.w3c.dom.Element; + +import eu.stork.peps.auth.engine.core.SPSector; + +/** + * The Class SPSectorMarshaller. + * + * @author fjquevedo + */ +public class SPSectorMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Marshall element content. + * + * @param samlObject the SAML object + * @param domElement the DOM element + * @throws MarshallingException the marshalling exception + */ + protected final void marshallElementContent(final XMLObject samlObject, + final Element domElement) throws MarshallingException { + final SPSector spSector = (SPSector) samlObject; + XMLHelper.appendTextContent(domElement, spSector.getSPSector()); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java new file mode 100644 index 000000000..cbb05c6e5 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SPSectorUnmarshaller.java @@ -0,0 +1,42 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.SPSector; + +/** + * The Class SPSectorUnmarshaller. + * + * @author fjquevedo + */ +public class SPSectorUnmarshaller extends AbstractSAMLObjectUnmarshaller { + + + /** + * Process element content. + * + * @param samlObject the SAML object + * @param elementContent the element content + */ + protected final void processElementContent(final XMLObject samlObject, + final String elementContent) { + final SPSector spSector = (SPSector) samlObject; + spSector.setSPSector(elementContent); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java new file mode 100644 index 000000000..80796ea86 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignHW.java @@ -0,0 +1,468 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.io.IOException; +import java.io.InputStream; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.PrivateKey; +import java.security.Provider; +import java.security.Security; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.InvalidPropertiesFormatException; +import java.util.List; +import java.util.Properties; + +import eu.stork.peps.auth.engine.X509PrincipalUtil; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.NotImplementedException; +import org.bouncycastle.jce.X509Principal; +import org.opensaml.Configuration; +import org.opensaml.common.SAMLObject; +import org.opensaml.common.SignableSAMLObject; +import org.opensaml.saml2.core.Assertion; +import org.opensaml.saml2.core.LogoutResponse; +import org.opensaml.saml2.core.Response; +import org.opensaml.security.SAMLSignatureProfileValidator; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.security.SecurityConfiguration; +import org.opensaml.xml.security.SecurityException; +import org.opensaml.xml.security.credential.Credential; +import org.opensaml.xml.security.keyinfo.KeyInfoGenerator; +import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory; +import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorManager; +import org.opensaml.xml.security.keyinfo.KeyInfoHelper; +import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager; +import org.opensaml.xml.security.x509.BasicX509Credential; +import org.opensaml.xml.security.trust.ExplicitKeyTrustEvaluator; +import org.opensaml.xml.signature.KeyInfo; +import org.opensaml.xml.signature.Signature; +import org.opensaml.xml.signature.SignatureConstants; +import org.opensaml.xml.signature.SignatureException; +import org.opensaml.xml.signature.SignatureValidator; +import org.opensaml.xml.signature.Signer; +import org.opensaml.xml.validation.ValidationException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + + + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.SAMLEngineSignI; +import eu.stork.peps.exceptions.SAMLEngineException; + +/** + * The Class HWSign. Module of sign. + * + * @author fjquevedo + */ +public final class SignHW implements SAMLEngineSignI { + + /** The Constant CONFIGURATION_FILE. */ + private static final String CONF_FILE = "configurationFile"; + + /** The Constant KEYSTORE_TYPE. + private static final String KEYSTORE_TYPE = "keystoreType" */ + + /** The logger. */ + private static final Logger LOG = LoggerFactory.getLogger(SignHW.class + .getName()); + + /** The stork own key store. */ + private KeyStore storkOwnKeyStore = null; + + /** + * Gets the stork own key store. + * + * @return the stork own key store + */ + public KeyStore getStorkOwnKeyStore() { + return storkOwnKeyStore; + } + + /** + * Gets the stork trustStore. + * + * @return the stork own key store + */ + public KeyStore getTrustStore() { + return storkOwnKeyStore; + } + + /** + * Sets the stork own key store. + * + * @param newkOwnKeyStore the new stork own key store + */ + public void setStorkOwnKeyStore(final KeyStore newkOwnKeyStore) { + this.storkOwnKeyStore = newkOwnKeyStore; + } + + /** + * Gets the properties. + * + * @return the properties + */ + public Properties getProperties() { + return properties; + } + + /** + * Sets the properties. + * + * @param newProperties the new properties + */ + public void setProperties(final Properties newProperties) { + this.properties = newProperties; + } + + /** The HW sign prop. */ + private Properties properties = null; + + /** + * @see + * eu.stork.peps.auth.engine.core.SAMLEngineSignI#init(java.lang.String) + * @param fileConf file of configuration + * @throws SAMLEngineException error in read file + */ + public void init(final String fileConf) + throws SAMLEngineException { + InputStream inputStr = null; + try { + inputStr = SignHW.class.getResourceAsStream("/" + + fileConf); + properties = new Properties(); + + properties.loadFromXML(inputStr); + } catch (final InvalidPropertiesFormatException e) { + LOG.info("Exception: invalid properties format."); + throw new SAMLEngineException(e); + } catch (IOException e) { + LOG.info("Exception: invalid file: " + fileConf); + throw new SAMLEngineException(e); + } finally { + IOUtils.closeQuietly(inputStr); + } + } + + + /** + * @see eu.stork.peps.auth.engine.core.SAMLEngineSignI#getCertificate() + * @return the X509Certificate. + */ + public X509Certificate getCertificate() { + throw new NotImplementedException(); + } + + /** + * @see + * eu.stork.peps.auth.engine.core.SAMLEngineSignI#sign(SignableSAMLObject tokenSaml) + * @param tokenSaml signable SAML Object + * @return the SAMLObject signed. + * @throws SAMLEngineException error in sign token saml + */ + public SAMLObject sign(final SignableSAMLObject tokenSaml) throws SAMLEngineException { + + try { + LOG.info("Star procces of sign"); + final char[] pin = properties.getProperty("keyPassword") + .toCharArray(); + + storkOwnKeyStore.load(null, pin); + + final String serialNumber = properties.getProperty("serialNumber"); + final String issuer = properties.getProperty("issuer"); + + String alias = null; + String aliasCert; + X509Certificate certificate; + + boolean find = false; + for (final Enumeration e = storkOwnKeyStore.aliases(); e + .hasMoreElements() && !find;) { + aliasCert = e.nextElement(); + certificate = (X509Certificate) storkOwnKeyStore + .getCertificate(aliasCert); + // Verified serial number, issuer + + final String serialNum = certificate.getSerialNumber() + .toString(16); + X509Principal issuerDN = new X509Principal(certificate.getIssuerDN().getName()); + X509Principal issuerDNConf = new X509Principal(issuer); + + if(serialNum.equalsIgnoreCase(serialNumber) + && X509PrincipalUtil.equals(issuerDN, issuerDNConf)){ + alias = aliasCert; + find = true; + } + + } + + if (!find) { + throw new SAMLEngineException("Certificate cannot be found in keystore "); + } + certificate = (X509Certificate) storkOwnKeyStore.getCertificate(alias); + final PrivateKey privateKey = (PrivateKey) storkOwnKeyStore.getKey( + alias, pin); + + LOG.info("Recover BasicX509Credential."); + final BasicX509Credential credential = new BasicX509Credential(); + + LOG.debug("Load certificate"); + credential.setEntityCertificate(certificate); + + LOG.debug("Load privateKey"); + credential.setPrivateKey(privateKey); + + LOG.info("Star procces of sign"); + final Signature signature = (Signature) org.opensaml.xml.Configuration + .getBuilderFactory().getBuilder( + Signature.DEFAULT_ELEMENT_NAME).buildObject( + Signature.DEFAULT_ELEMENT_NAME); + + LOG.debug("Begin signature with openSaml"); + signature.setSigningCredential(credential); + + /*signature.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);*/ + signature.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); + + + + final SecurityConfiguration securityConf = + org.opensaml.xml.Configuration.getGlobalSecurityConfiguration(); + final NamedKeyInfoGeneratorManager keyInfoManager = securityConf + .getKeyInfoGeneratorManager(); + final KeyInfoGeneratorManager keyInfoGenManager = keyInfoManager + .getDefaultManager(); + final KeyInfoGeneratorFactory keyInfoGenFac = keyInfoGenManager + .getFactory(credential); + final KeyInfoGenerator keyInfoGenerator = keyInfoGenFac + .newInstance(); + + final KeyInfo keyInfo = keyInfoGenerator.generate(credential); + + signature.setKeyInfo(keyInfo); + + LOG.debug("Set Canonicalization Algorithm"); + signature.setCanonicalizationAlgorithm( + SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); + + //Create a second signature which will be used when signing assertion and response + final Signature signature2 = (Signature) Configuration + .getBuilderFactory().getBuilder( + Signature.DEFAULT_ELEMENT_NAME).buildObject( + Signature.DEFAULT_ELEMENT_NAME); + final SecurityConfiguration secConfiguration2 = Configuration + .getGlobalSecurityConfiguration(); + final NamedKeyInfoGeneratorManager keyInfoManager2 = secConfiguration2 + .getKeyInfoGeneratorManager(); + final KeyInfoGeneratorManager keyInfoGenManager2 = keyInfoManager2 + .getDefaultManager(); + final KeyInfoGeneratorFactory keyInfoGenFac2 = keyInfoGenManager2 + .getFactory(credential); + final KeyInfoGenerator keyInfoGenerator2 = keyInfoGenFac2 + .newInstance(); + + KeyInfo keyInfo2 = keyInfoGenerator2.generate(credential); + signature2.setSigningCredential(credential); + signature2.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); + signature2.setKeyInfo(keyInfo2); + signature2.setCanonicalizationAlgorithm( + SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); + + + LOG.info("Marshall samlToken."); + String qn = tokenSaml.getElementQName().toString(); + + if (qn.endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) + { + tokenSaml.setSignature(signature); + CustomAttributeQueryMarshaller mars = new CustomAttributeQueryMarshaller(); + mars.marshall(tokenSaml); + Signer.signObject(signature); + } + else if (qn.endsWith(Response.DEFAULT_ELEMENT_LOCAL_NAME) && !qn.contains(LogoutResponse.DEFAULT_ELEMENT_LOCAL_NAME)) + { + Response res = (Response)tokenSaml; + List asserts = res.getAssertions(); + //If multiple assertions we just sign the response and not the assertion + if (asserts.size() > 1) + { + tokenSaml.setSignature(signature); + Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + } + //If single assertion we sign the assertion and response + else + { + Assertion assertion = (Assertion)asserts.get(0); + assertion.setSignature(signature); + tokenSaml.setSignature(signature2); + Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + Signer.signObject(signature2); + } + } + //Normally we just sign the total saml response + else + { + tokenSaml.setSignature(signature); + Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + } + + } catch (final MarshallingException e) { + LOG.error("MarshallingException"); + throw new SAMLEngineException(e); + } catch (final NoSuchAlgorithmException e) { + LOG.error("A 'xmldsig#rsa-sha1' cryptographic algorithm is requested but is not available in the environment."); + throw new SAMLEngineException(e); + } catch (final KeyStoreException e) { + LOG.error("Generic KeyStore exception."); + throw new SAMLEngineException(e); + } catch (final SignatureException e) { + LOG.error("Signature exception."); + throw new SAMLEngineException(e); + } catch (final SecurityException e) { + LOG.error("Security exception."); + throw new SAMLEngineException(e); + } catch (final CertificateException e) { + LOG.error("Certificate exception."); + throw new SAMLEngineException(e); + } catch (final IOException e) { + LOG.error("IO exception."); + throw new SAMLEngineException(e); + } catch (final UnrecoverableKeyException e) { + LOG.error("UnrecoverableKeyException exception."); + throw new SAMLEngineException(e); + } + + return tokenSaml; + } + + /** + * @see + * eu.stork.peps.auth.engine.core.SAMLEngineSignI#validateSignature(SignableSAMLObject) + * @param tokenSaml the token saml + * @return the SAMLObject validated. + * @throws SAMLEngineException exception in validate signature + */ + public SAMLObject validateSignature(final SignableSAMLObject tokenSaml) + throws SAMLEngineException { + LOG.info("Start signature validation."); + try { + + // Validate structure signature + final SAMLSignatureProfileValidator signProfValidator = + new SAMLSignatureProfileValidator(); + + // Indicates signature id conform to SAML Signature profile + signProfValidator.validate(tokenSaml.getSignature()); + + String aliasCert; + X509Certificate certificate; + + final List trustedCred = new ArrayList(); + + for (final Enumeration e = storkOwnKeyStore.aliases(); e + .hasMoreElements();) { + aliasCert = e.nextElement(); + final BasicX509Credential credential = new BasicX509Credential(); + certificate = (X509Certificate) storkOwnKeyStore + .getCertificate(aliasCert); + credential.setEntityCertificate(certificate); + trustedCred.add(credential); + } + + final KeyInfo keyInfo = tokenSaml.getSignature().getKeyInfo(); + final List listCertificates = KeyInfoHelper + .getCertificates(keyInfo); + + if (listCertificates.size() != 1) { + throw new SAMLEngineException("Only must be one certificate"); + } + + // Exist only one certificate + final BasicX509Credential entityX509Cred = new BasicX509Credential(); + entityX509Cred.setEntityCertificate(listCertificates.get(0)); + + final ExplicitKeyTrustEvaluator keyTrustEvaluator = + new ExplicitKeyTrustEvaluator(); + if (!keyTrustEvaluator.validate(entityX509Cred, trustedCred)) { + throw new SAMLEngineException("Certificate it is not trusted."); + } + + final SignatureValidator sigValidator = new SignatureValidator( + entityX509Cred); + + sigValidator.validate(tokenSaml.getSignature()); + + } catch (final ValidationException e) { + LOG.error("ValidationException.", e); + throw new SAMLEngineException(e); + } catch (final KeyStoreException e) { + LOG.error("ValidationException.", e); + throw new SAMLEngineException(e); + } catch (final CertificateException e) { + LOG.error("CertificateException.", e); + throw new SAMLEngineException(e); + } + return tokenSaml; + } + + /** + * load cryptographic service provider. + * + * @throws SAMLEngineException the SAML engine exception + * Note this class was using pkcs11Provider + * final Provider pkcs11Provider = new sun.security.pkcs11.SunPKCS11(inputStream) + * if (Security.getProperty(pkcs11Provider.getName()) == null) { + * Security.insertProviderAt(pkcs11Provider, Security .getProviders().length) + * } + * storkOwnKeyStore = KeyStore.getInstance(properties.getProperty(KEYSTORE_TYPE)) + */ + public void loadCryptServiceProvider() throws SAMLEngineException { + LOG.info("Load Cryptographic Service Provider"); + InputStream inputStream = null; + + try { + inputStream = SignHW.class.getResourceAsStream("/" + + properties.getProperty(CONF_FILE)); + + } catch (final Exception e) { + throw new SAMLEngineException( + "Error loading CryptographicServiceProvider", e); + } finally { + IOUtils.closeQuietly(inputStream); + } + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java new file mode 100644 index 000000000..c37074eab --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignModuleFactory.java @@ -0,0 +1,64 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.engine.core.SAMLEngineSignI; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + +/** + * The Class ModuleSignFactory. + * + * @author fjquevedo + * + */ + +public final class SignModuleFactory { + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(SignModuleFactory.class.getName()); + + /** + * Instantiates a new module sign factory. + */ + private SignModuleFactory() { + + } + + /** + * Gets the single instance of SignModuleFactory. + * + * @param className the class name + * + * @return single instance of SignModuleFactory + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static SAMLEngineSignI getInstance(final String className) + throws STORKSAMLEngineException { + LOG.info("[START]SignModuleFactory static"); + try { + final Class cls = Class.forName(className); + return (SAMLEngineSignI) cls.newInstance(); + } catch (Exception e) { + throw new STORKSAMLEngineException(e); + } + + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java new file mode 100644 index 000000000..6d9ac9ce3 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignP12.java @@ -0,0 +1,565 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +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.PrivateKey; +import java.security.Provider; +import java.security.Security; +import java.security.UnrecoverableKeyException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.InvalidPropertiesFormatException; +import java.util.List; +import java.util.Properties; + +import eu.stork.peps.auth.engine.X509PrincipalUtil; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.NotImplementedException; +import org.bouncycastle.jce.X509Principal; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.opensaml.Configuration; +import org.opensaml.common.SAMLObject; +import org.opensaml.common.SignableSAMLObject; +import org.opensaml.saml2.core.Assertion; +import org.opensaml.saml2.core.LogoutResponse; +import org.opensaml.saml2.core.Response; +import org.opensaml.security.SAMLSignatureProfileValidator; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.security.SecurityConfiguration; +import org.opensaml.xml.security.SecurityException; +import org.opensaml.xml.security.credential.Credential; +import org.opensaml.xml.security.keyinfo.KeyInfoGenerator; +import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory; +import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorManager; +import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager; +import org.opensaml.xml.security.x509.BasicX509Credential; +import org.opensaml.xml.security.trust.ExplicitKeyTrustEvaluator; +import org.opensaml.xml.signature.KeyInfo; +import org.opensaml.xml.signature.Signature; +import org.opensaml.xml.signature.SignatureConstants; +import org.opensaml.xml.signature.SignatureException; +import org.opensaml.xml.signature.SignatureValidator; +import org.opensaml.xml.signature.Signer; +import org.opensaml.xml.util.Base64; +import org.opensaml.xml.validation.ValidationException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.SAMLEngineSignI; +import eu.stork.peps.exceptions.SAMLEngineException; + +/** + * The Class SWSign. Class responsible for signing and validating of messages + * SAML with a certificate store software. + * + * @author fjquevedo + */ +public final class SignP12 implements SAMLEngineSignI { + + /** The logger. */ + private static final Logger LOG = LoggerFactory.getLogger(SignP12.class + .getName()); + + + /** The p12 store. */ + private KeyStore p12Store = null; + + + /** The trust store. */ + private KeyStore trustStore = null; + + + /** + * Gets the trust store. + * + * @return the trust store + */ + @Override + public KeyStore getTrustStore() { + return trustStore; + } + + /** + * Sets the trust store. + * + * @param newTrustStore the new trust store + */ + public void setTrustStore(final KeyStore newTrustStore) { + this.trustStore = newTrustStore; + } + + /** + * The instance. + * + * @return the properties + */ + + public Properties getProperties() { + return properties; + } + + + + /** + * Gets the p12 store. + * + * @return the p12 store + */ + public KeyStore getP12Store() { + return p12Store; + } + + + + /** + * Sets the p12 store. + * + * @param newP12Store the new p12 store + */ + public void setP12Store(final KeyStore newP12Store) { + this.p12Store = newP12Store; + } + + + + /** + * Sets the properties. + * + * @param newProperties the new properties + */ + public void setProperties(final Properties newProperties) { + this.properties = newProperties; + } + + /** The SW sign prop. */ + private Properties properties = null; + + + /** + * Initialize the file configuration. + * + * @param fileConf name of the file configuration + * + * @throws SAMLEngineException error at the load from file configuration + */ + @Override + public void init(final String fileConf) throws SAMLEngineException { + InputStream fileProperties = null; + properties = new Properties(); + try { + try { + LOG.debug("Fichero a cargar " + fileConf); + fileProperties = new FileInputStream(fileConf); + properties.loadFromXML(fileProperties); + } catch (Exception e) { + LOG.error("Fallo al cargar el recurso externo. Se reintenta como fichero interno."); + fileProperties = SignP12.class.getResourceAsStream("/" + fileConf); + if (fileProperties == null) { + fileProperties = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileConf); + if (fileProperties == null) { + Enumeration files = ClassLoader.getSystemClassLoader().getResources(fileConf); + if (files != null && files.hasMoreElements()) { + LOG.info("Se han encontrado recurso/s. Se toma el primero."); + fileProperties = ClassLoader.getSystemClassLoader().getResourceAsStream(files.nextElement().getFile()); + } else { + throw new IOException("No se pudo recuperar el fichero: " + fileConf, e); + } + } + } + LOG.debug("Recuperados " + fileProperties.available() + " bytes"); + properties.loadFromXML(fileProperties); + } + } catch (InvalidPropertiesFormatException e) { + LOG.info("Exception: invalid properties format."); + throw new SAMLEngineException(e); + } catch (IOException e) { + LOG.info("Exception: invalid file: " + fileConf); + throw new SAMLEngineException(e); + } finally { + IOUtils.closeQuietly(fileProperties); + } + } + + /** + * Gets the certificate. + * + * @return the X509Certificate + * + */ + @Override + public X509Certificate getCertificate() { + throw new NotImplementedException(); + } + + /** + * Sign the token SAML. + * + * @param tokenSaml token SAML + * + * @return the X509Certificate signed. + * + * @throws SAMLEngineException error at sign SAML token + * + */ + @Override + public SAMLObject sign(final SignableSAMLObject tokenSaml) + throws SAMLEngineException { + LOG.info("Start Sign process"); + try { + + final String serialNumber = properties.getProperty("serialNumber"); + final String issuer = properties.getProperty("issuer"); + + String alias = null; + String aliasCert; + X509Certificate certificate; + + boolean find = false; + for (final Enumeration e = p12Store.aliases(); e + .hasMoreElements() && !find;) { + aliasCert = e.nextElement(); + certificate = (X509Certificate) p12Store + .getCertificate(aliasCert); + + final String serialNum = certificate.getSerialNumber() + .toString(16); + + X509Principal issuerDN = new X509Principal(certificate.getIssuerDN().getName()); + X509Principal issuerDNConf = new X509Principal(issuer); + + if(serialNum.equalsIgnoreCase(serialNumber) + && X509PrincipalUtil.equals(issuerDN, issuerDNConf)){ + alias = aliasCert; + find = true; + } + + } + + certificate = (X509Certificate) p12Store + .getCertificate(alias); + final PrivateKey privateKey = (PrivateKey) p12Store.getKey( + alias, properties.getProperty("keyPassword").toCharArray()); + + LOG.info("Recover BasicX509Credential."); + final BasicX509Credential credential = new BasicX509Credential(); + + LOG.debug("Load certificate"); + credential.setEntityCertificate(certificate); + + LOG.debug("Load privateKey"); + credential.setPrivateKey(privateKey); + + LOG.debug("Begin signature with openSaml"); + final Signature signature = (Signature) org.opensaml.xml.Configuration + .getBuilderFactory().getBuilder( + Signature.DEFAULT_ELEMENT_NAME).buildObject( + Signature.DEFAULT_ELEMENT_NAME); + + signature.setSigningCredential(credential); + + /*signature.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1);*/ + signature.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); + + final SecurityConfiguration secConfiguration = org.opensaml.xml.Configuration + .getGlobalSecurityConfiguration(); + final NamedKeyInfoGeneratorManager keyInfoManager = secConfiguration + .getKeyInfoGeneratorManager(); + final KeyInfoGeneratorManager keyInfoGenManager = keyInfoManager + .getDefaultManager(); + final KeyInfoGeneratorFactory keyInfoGenFac = keyInfoGenManager + .getFactory(credential); + final KeyInfoGenerator keyInfoGenerator = keyInfoGenFac + .newInstance(); + + final KeyInfo keyInfo = keyInfoGenerator.generate(credential); + + signature.setKeyInfo(keyInfo); + signature.setCanonicalizationAlgorithm( + SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); + + //Create a second signature which will be used when signing assertion and response + final Signature signature2 = (Signature) org.opensaml.xml.Configuration + .getBuilderFactory().getBuilder( + Signature.DEFAULT_ELEMENT_NAME).buildObject( + Signature.DEFAULT_ELEMENT_NAME); + final SecurityConfiguration secConfiguration2 = org.opensaml.xml.Configuration + .getGlobalSecurityConfiguration(); + final NamedKeyInfoGeneratorManager keyInfoManager2 = secConfiguration2 + .getKeyInfoGeneratorManager(); + final KeyInfoGeneratorManager keyInfoGenManager2 = keyInfoManager2 + .getDefaultManager(); + final KeyInfoGeneratorFactory keyInfoGenFac2 = keyInfoGenManager2 + .getFactory(credential); + final KeyInfoGenerator keyInfoGenerator2 = keyInfoGenFac2 + .newInstance(); + + KeyInfo keyInfo2 = keyInfoGenerator2.generate(credential); + signature2.setSigningCredential(credential); + signature2.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); + signature2.setKeyInfo(keyInfo2); + signature2.setCanonicalizationAlgorithm( + SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); + + + LOG.info("Marshall samlToken."); + String qn = tokenSaml.getElementQName().toString(); + + if (qn.endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) + { + tokenSaml.setSignature(signature); + CustomAttributeQueryMarshaller mars = new CustomAttributeQueryMarshaller(); + mars.marshall(tokenSaml); + Signer.signObject(signature); + } + else if (qn.endsWith(Response.DEFAULT_ELEMENT_LOCAL_NAME) && !qn.contains(LogoutResponse.DEFAULT_ELEMENT_LOCAL_NAME)) + { + Response res = (Response)tokenSaml; + List asserts = res.getAssertions(); + //If multiple assertions we just sign the response and not the assertion + if (asserts.size() > 1) + { + tokenSaml.setSignature(signature); + org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + } + //If single assertion we sign the assertion and response + else + { + Assertion assertion = asserts.get(0); + assertion.setSignature(signature); + tokenSaml.setSignature(signature2); + org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + Signer.signObject(signature2); + } + } + //Normally we just sign the total saml response + else + { + tokenSaml.setSignature(signature); + org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + } + + } catch (MarshallingException e) { + LOG.error("MarshallingException"); + throw new SAMLEngineException(e); + } catch (NoSuchAlgorithmException e) { + LOG.error("A 'xmldsig#rsa-sha1' cryptographic algorithm is requested but is not available in the environment."); + throw new SAMLEngineException(e); + } catch (KeyStoreException e) { + LOG.error("Generic KeyStore exception."); + throw new SAMLEngineException(e); + } catch (SignatureException e) { + LOG.error("Signature exception."); + throw new SAMLEngineException(e); + } catch (SecurityException e) { + LOG.error("Security exception."); + throw new SAMLEngineException(e); + } catch (UnrecoverableKeyException e) { + LOG.error("UnrecoverableKey exception."); + throw new SAMLEngineException(e); + } + + return tokenSaml; + } + + /** + * Validate signature. + * + * @param tokenSaml token SAML + * + * @return the SAMLObject validated. + * + * @throws SAMLEngineException error validate signature + * + */ + @Override + public SAMLObject validateSignature(final SignableSAMLObject tokenSaml) + throws SAMLEngineException { + LOG.info("Start signature validation."); + try { + + // Validate structure signature + final SAMLSignatureProfileValidator sigProfValidator = + new SAMLSignatureProfileValidator(); + try { + // Indicates signature id conform to SAML Signature profile + sigProfValidator.validate(tokenSaml.getSignature()); + } catch (ValidationException e) { + LOG.error("ValidationException: signature isn't conform to SAML Signature profile."); + throw new SAMLEngineException(e); + } + + String aliasCert = null; + X509Certificate certificate; + + final List trustCred = new ArrayList(); + + for (final Enumeration e = trustStore.aliases(); e + .hasMoreElements();) + { + aliasCert = e.nextElement(); + final BasicX509Credential credential = new BasicX509Credential(); + certificate = (X509Certificate) trustStore + .getCertificate(aliasCert); + credential.setEntityCertificate(certificate); + trustCred.add(credential); + } + + final KeyInfo keyInfo = tokenSaml.getSignature().getKeyInfo(); + + final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo + .getX509Datas().get(0).getX509Certificates().get(0); + + final CertificateFactory certFact = CertificateFactory + .getInstance("X.509"); + final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 + .decode(xmlCert.getValue())); + final X509Certificate cert = (X509Certificate) certFact + .generateCertificate(bis); + + // Exist only one certificate + final BasicX509Credential entityX509Cred = new BasicX509Credential(); + entityX509Cred.setEntityCertificate(cert); + + /* A better use of PKI based validation but not wanted for STORK... + boolean trusted = false; + + for (final Enumeration e = trustStore.aliases(); e.hasMoreElements();) + { + aliasCert = e.nextElement(); + certificate = (X509Certificate) trustStore.getCertificate(aliasCert); + try { + cert.verify(certificate.getPublicKey()); + trusted = true; + break; + } + catch (Exception ex) { + //Do nothing - cert not trusted yet + } + } + + if (!trusted) + throw new SAMLEngineException("Certificate is not trusted.");*/ + + // Validate trust certificates + final ExplicitKeyTrustEvaluator keyTrustEvaluator = + new ExplicitKeyTrustEvaluator(); + if (!keyTrustEvaluator.validate(entityX509Cred, trustCred)) + { + throw new SAMLEngineException("Certificate it is not trusted."); + } + + // Validate signature + final SignatureValidator sigValidator = new SignatureValidator( + entityX509Cred); + sigValidator.validate(tokenSaml.getSignature()); + + } catch (ValidationException e) { + LOG.error("ValidationException."); + throw new SAMLEngineException(e); + } catch (KeyStoreException e) { + LOG.error("KeyStoreException.", e); + throw new SAMLEngineException(e); + } catch (GeneralSecurityException e) { + LOG.error("GeneralSecurityException.", e); + throw new SAMLEngineException(e); + } + return tokenSaml; + } + + + /** + * Load cryptographic service provider. + * + * @throws SAMLEngineException the SAML engine exception + */ + @Override + public void loadCryptServiceProvider() throws SAMLEngineException { + LOG.info("Load Cryptographic Service Provider"); + + FileInputStream fis = null; + FileInputStream fisTrustStore = null; + + try { + // Dynamically register Bouncy Castle provider. + boolean found = false; + // Check if BouncyCastle is already registered as a provider + final Provider[] providers = Security.getProviders(); + for (int i = 0; i < providers.length; i++) { + if (providers[i].getName().equals( + BouncyCastleProvider.PROVIDER_NAME)) { + found = true; + } + } + + // Register only if the provider has not been previously registered + if (!found) { + LOG.debug("SAMLCore: Register Bouncy Castle provider."); + Security.insertProviderAt(new BouncyCastleProvider(), Security + .getProviders().length); + } + + p12Store = KeyStore.getInstance(properties + .getProperty("keystoreType")); + + fis = new FileInputStream(properties + .getProperty("keystorePath")); + + p12Store.load(fis, properties.getProperty( + "keyStorePassword").toCharArray()); + + + trustStore = KeyStore.getInstance(properties + .getProperty("trustStoreType")); + + fisTrustStore = new FileInputStream(properties + .getProperty("trustStorePath")); + trustStore.load(fisTrustStore, properties.getProperty( + "trustStorePassword").toCharArray()); + + } catch (Exception e) { + throw new SAMLEngineException( + "Error loading CryptographicServiceProvider", e); + } finally { + IOUtils.closeQuietly(fis); + IOUtils.closeQuietly(fisTrustStore); + } + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java new file mode 100644 index 000000000..e31688069 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/SignSW.java @@ -0,0 +1,527 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import eu.stork.peps.auth.engine.X509PrincipalUtil; +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; +import eu.stork.peps.auth.engine.core.SAMLEngineSignI; +import eu.stork.peps.exceptions.SAMLEngineException; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.NotImplementedException; +import org.bouncycastle.jce.X509Principal; +import org.bouncycastle.jce.provider.BouncyCastleProvider; +import org.opensaml.Configuration; +import org.opensaml.common.SAMLObject; +import org.opensaml.common.SignableSAMLObject; +import org.opensaml.saml2.core.Assertion; +import org.opensaml.saml2.core.LogoutResponse; +import org.opensaml.saml2.core.Response; +import org.opensaml.security.SAMLSignatureProfileValidator; +import org.opensaml.xml.io.MarshallingException; +import org.opensaml.xml.security.SecurityConfiguration; +import org.opensaml.xml.security.SecurityException; +import org.opensaml.xml.security.credential.Credential; +import org.opensaml.xml.security.keyinfo.KeyInfoGenerator; +import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorFactory; +import org.opensaml.xml.security.keyinfo.KeyInfoGeneratorManager; +import org.opensaml.xml.security.keyinfo.NamedKeyInfoGeneratorManager; +import org.opensaml.xml.security.trust.ExplicitKeyTrustEvaluator; +import org.opensaml.xml.security.trust.ExplicitX509CertificateTrustEvaluator; +import org.opensaml.xml.security.x509.BasicX509Credential; +import org.opensaml.xml.signature.*; +import org.opensaml.xml.signature.Signature; +import org.opensaml.xml.signature.SignatureException; +import org.opensaml.xml.signature.Signer; +import org.opensaml.xml.util.Base64; +import org.opensaml.xml.validation.ValidationException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.ByteArrayInputStream; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.security.*; +import java.security.cert.CertificateExpiredException; +import java.security.cert.CertificateFactory; +import java.security.cert.CertificateNotYetValidException; +import java.security.cert.X509Certificate; +import java.util.*; + + +/** + * The Class SWSign. Class responsible for signing and validating of messages + * SAML with a certificate store software. + * + * @author fjquevedo + */ +public class SignSW implements SAMLEngineSignI { + + /** + * The Constant KEYSTORE_TYPE. + */ + private static final String KEYSTORE_TYPE = "keystoreType"; + + /** + * The Constant KEY_STORE_PASSWORD. + */ + private static final String KEY_STORE_PASS = "keyStorePassword"; + + /** + * The logger. + */ + private static final Logger LOG = LoggerFactory.getLogger(SignSW.class + .getName()); + + /** + * The stork own key store. + */ + private KeyStore storkOwnKeyStore = null; + + /** + * The instance. + * + * @return the properties + */ + + public final Properties getProperties() { + return properties; + } + + /** + * Gets the stork own key store. + * + * @return the stork own key store + */ + public final KeyStore getStorkOwnKeyStore() { + return storkOwnKeyStore; + } + + /** + * Gets the stork trustStore. + * + * @return the stork own key store + */ + public KeyStore getTrustStore() { + return storkOwnKeyStore; + } + + /** + * Sets the stork own key store. + * + * @param newkOwnKeyStore the new stork own key store + */ + public final void setStorkOwnKeyStore(final KeyStore newkOwnKeyStore) { + this.storkOwnKeyStore = newkOwnKeyStore; + } + + /** + * Sets the properties. + * + * @param newProperties the new properties + */ + public final void setProperties(final Properties newProperties) { + this.properties = newProperties; + } + + /** + * The SW sign prop. + */ + private Properties properties = null; + + + /** + * Inits the file configuration. + * + * @param fileConf name of the file configuration + * @throws SAMLEngineException error at the load from file configuration + */ + public final void init(final String fileConf) + throws SAMLEngineException { + InputStream fileProperties = null; + // fetch base from system properties, give a default if there is nothing configured + String base = System.getProperty("eu.stork.samlengine.config.location"); + if (null != base) { + if (!base.endsWith("/")) { + base += "/"; + } + } else { + base = "/"; + } + + try { + if (null != base) + fileProperties = new FileInputStream(base + fileConf); + else + fileProperties = SignSW.class.getResourceAsStream("/" + + fileConf); + properties = new Properties(); + + properties.loadFromXML(fileProperties); + fileProperties.close(); + } catch (InvalidPropertiesFormatException e) { + LOG.info("Exception: invalid properties format."); + throw new SAMLEngineException(e); + } catch (IOException e) { + LOG.info("Exception: invalid file: " + fileConf); + throw new SAMLEngineException(e); + } finally { + IOUtils.closeQuietly(fileProperties); + } + } + + /** + * @return the X509Certificate + * @see eu.stork.peps.auth.engine.core.SAMLEngineSignI#getCertificate() + */ + public final X509Certificate getCertificate() { + throw new NotImplementedException(); + } + + + /** + * Sign the token SAML. + * + * @param tokenSaml the token SAML. + * @return the SAML object + * @throws SAMLEngineException the SAML engine exception + */ + public final SAMLObject sign(final SignableSAMLObject tokenSaml) + throws SAMLEngineException { + LOG.info("Start Sign process."); + try { + final String serialNumber = properties.getProperty("serialNumber"); + final String issuer = properties.getProperty("issuer"); + + String alias = null; + String aliasCert; + X509Certificate certificate; + boolean find = false; + + for (final Enumeration e = storkOwnKeyStore.aliases(); e + .hasMoreElements() && !find; ) { + aliasCert = e.nextElement(); + certificate = (X509Certificate) storkOwnKeyStore + .getCertificate(aliasCert); + + final String serialNum = certificate.getSerialNumber() + .toString(16); + + X509Principal issuerDN = new X509Principal(certificate.getIssuerDN().getName()); + X509Principal issuerDNConf = new X509Principal(issuer); + + if (serialNum.equalsIgnoreCase(serialNumber) + && X509PrincipalUtil.equals(issuerDN, issuerDNConf)) { + alias = aliasCert; + find = true; + } + } + if (!find) { + throw new SAMLEngineException("Certificate cannot be found in keystore "); + } + certificate = (X509Certificate) storkOwnKeyStore.getCertificate(alias); + final PrivateKey privateKey = (PrivateKey) storkOwnKeyStore.getKey( + alias, properties.getProperty("keyPassword").toCharArray()); + + LOG.info("Recover BasicX509Credential."); + final BasicX509Credential credential = new BasicX509Credential(); + + LOG.debug("Load certificate"); + credential.setEntityCertificate(certificate); + + LOG.debug("Load privateKey"); + credential.setPrivateKey(privateKey); + + LOG.debug("Begin signature with openSaml"); + final Signature signature = (Signature) Configuration + .getBuilderFactory().getBuilder( + Signature.DEFAULT_ELEMENT_NAME).buildObject( + Signature.DEFAULT_ELEMENT_NAME); + + signature.setSigningCredential(credential); + signature.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); + //signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1); + + + final SecurityConfiguration secConfiguration = Configuration + .getGlobalSecurityConfiguration(); + final NamedKeyInfoGeneratorManager keyInfoManager = secConfiguration + .getKeyInfoGeneratorManager(); + final KeyInfoGeneratorManager keyInfoGenManager = keyInfoManager + .getDefaultManager(); + final KeyInfoGeneratorFactory keyInfoGenFac = keyInfoGenManager + .getFactory(credential); + final KeyInfoGenerator keyInfoGenerator = keyInfoGenFac + .newInstance(); + + KeyInfo keyInfo = keyInfoGenerator.generate(credential); + + signature.setKeyInfo(keyInfo); + signature.setCanonicalizationAlgorithm( + SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); + + //Create a second signature which will be used when signing assertion and response + final Signature signature2 = (Signature) Configuration + .getBuilderFactory().getBuilder( + Signature.DEFAULT_ELEMENT_NAME).buildObject( + Signature.DEFAULT_ELEMENT_NAME); + final SecurityConfiguration secConfiguration2 = Configuration + .getGlobalSecurityConfiguration(); + final NamedKeyInfoGeneratorManager keyInfoManager2 = secConfiguration2 + .getKeyInfoGeneratorManager(); + final KeyInfoGeneratorManager keyInfoGenManager2 = keyInfoManager2 + .getDefaultManager(); + final KeyInfoGeneratorFactory keyInfoGenFac2 = keyInfoGenManager2 + .getFactory(credential); + final KeyInfoGenerator keyInfoGenerator2 = keyInfoGenFac2 + .newInstance(); + + KeyInfo keyInfo2 = keyInfoGenerator2.generate(credential); + signature2.setSigningCredential(credential); + signature2.setSignatureAlgorithm( + SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256); + //signature2.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA1); + signature2.setKeyInfo(keyInfo2); + signature2.setCanonicalizationAlgorithm( + SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS); + + + LOG.info("Marshall samlToken."); + String qn = tokenSaml.getElementQName().toString(); + + if (qn.endsWith(CustomAttributeQuery.DEFAULT_ELEMENT_LOCAL_NAME)) { + tokenSaml.setSignature(signature); + CustomAttributeQueryMarshaller mars = new CustomAttributeQueryMarshaller(); + mars.marshall(tokenSaml); + Signer.signObject(signature); + } else if (qn.endsWith(Response.DEFAULT_ELEMENT_LOCAL_NAME) && !qn.contains(LogoutResponse.DEFAULT_ELEMENT_LOCAL_NAME)) { + Response res = (Response) tokenSaml; + List asserts = res.getAssertions(); + //If multiple assertions we just sign the response and not the assertion + if (asserts.size() > 1) { + tokenSaml.setSignature(signature); + Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + } + //If single assertion we sign the assertion and response + else { + Assertion assertion = (Assertion) asserts.get(0); + assertion.setSignature(signature); + tokenSaml.setSignature(signature2); + Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + Signer.signObject(signature2); + } + } + //Normally we just sign the total saml response + else { + tokenSaml.setSignature(signature); + Configuration.getMarshallerFactory().getMarshaller(tokenSaml) + .marshall(tokenSaml); + LOG.info("Sign samlToken."); + Signer.signObject(signature); + } + + + } catch (MarshallingException e) { + LOG.error("MarshallingException"); + throw new SAMLEngineException(e); + } catch (NoSuchAlgorithmException e) { + LOG.error("A 'xmldsig#rsa-sha1' cryptographic algorithm is requested but is not available in the environment."); + throw new SAMLEngineException(e); + } catch (KeyStoreException e) { + LOG.error("Generic KeyStore exception."); + throw new SAMLEngineException(e); + } catch (SignatureException e) { + LOG.error("Signature exception."); + throw new SAMLEngineException(e); + } catch (SecurityException e) { + LOG.error("Security exception."); + throw new SAMLEngineException(e); + } catch (UnrecoverableKeyException e) { + LOG.error("UnrecoverableKey exception."); + throw new SAMLEngineException(e); + } + + return tokenSaml; + } + + /** + * @param tokenSaml token SAML + * @return the SAMLObject validated. + * @throws SAMLEngineException error validate signature + * @see eu.stork.peps.auth.engine.core.SAMLEngineSignI#validateSignature(org.opensaml.common.SignableSAMLObject) + */ + public final SAMLObject validateSignature(final SignableSAMLObject tokenSaml) + throws SAMLEngineException { + LOG.info("Start signature validation."); + try { + + // Validate structure signature + final SAMLSignatureProfileValidator sigProfValidator = + new SAMLSignatureProfileValidator(); + try { + // Indicates signature id conform to SAML Signature profile + sigProfValidator.validate(tokenSaml.getSignature()); + } catch (ValidationException e) { + LOG.error("ValidationException: signature isn't conform to SAML Signature profile."); + throw new SAMLEngineException(e); + } + + String aliasCert = null; + X509Certificate certificate; + + final List trustCred = new ArrayList(); + + for (final Enumeration e = storkOwnKeyStore.aliases(); e + .hasMoreElements(); ) { + aliasCert = e.nextElement(); + final BasicX509Credential credential = new BasicX509Credential(); + certificate = (X509Certificate) storkOwnKeyStore + .getCertificate(aliasCert); + credential.setEntityCertificate(certificate); + trustCred.add(credential); + } + + final KeyInfo keyInfo = tokenSaml.getSignature().getKeyInfo(); + + final org.opensaml.xml.signature.X509Certificate xmlCert = keyInfo + .getX509Datas().get(0).getX509Certificates().get(0); + + final CertificateFactory certFact = CertificateFactory + .getInstance("X.509"); + final ByteArrayInputStream bis = new ByteArrayInputStream(Base64 + .decode(xmlCert.getValue())); + final X509Certificate cert = (X509Certificate) certFact + .generateCertificate(bis); + + // Exist only one certificate + final BasicX509Credential entityX509Cred = new BasicX509Credential(); + entityX509Cred.setEntityCertificate(cert); + + try { + cert.checkValidity(); + } catch (CertificateExpiredException exp) { + throw new SAMLEngineException("Certificate expired."); + } catch (CertificateNotYetValidException exp) { + throw new SAMLEngineException("Certificate not yet valid."); + } + + /* A better use of PKI based validation but not wanted for STORK... + boolean trusted = false; + + for (final Enumeration e = storkOwnKeyStore.aliases(); e.hasMoreElements();) + { + aliasCert = e.nextElement(); + certificate = (X509Certificate) storkOwnKeyStore.getCertificate(aliasCert); + try { + cert.verify(certificate.getPublicKey()); + trusted = true; + break; + } + catch (Exception ex) { + //Do nothing - cert not trusted yet + } + } + + if (!trusted) + throw new SAMLEngineException("Certificate is not trusted.");*/ + + // Validate trust certificates + final ExplicitX509CertificateTrustEvaluator chainTrustEvaluator = new ExplicitX509CertificateTrustEvaluator(); + + if (!chainTrustEvaluator.validate(entityX509Cred, trustCred)) { + throw new SAMLEngineException("Certificate is not trusted."); + } + final ExplicitKeyTrustEvaluator keyTrustEvaluator = + new ExplicitKeyTrustEvaluator(); + + if (!keyTrustEvaluator.validate(entityX509Cred, trustCred)) { + throw new SAMLEngineException("Certificate is not trusted."); + } + + // Validate signature + final SignatureValidator sigValidator = new SignatureValidator( + entityX509Cred); + sigValidator.validate(tokenSaml.getSignature()); + + } catch (ValidationException e) { + LOG.error("ValidationException."); + throw new SAMLEngineException(e); + } catch (KeyStoreException e) { + LOG.error("KeyStoreException.", e); + throw new SAMLEngineException(e); + } catch (GeneralSecurityException e) { + LOG.error("GeneralSecurityException.", e); + throw new SAMLEngineException(e); + } + LOG.info(tokenSaml.getSignatureReferenceID()); + LOG.info("Start signature validation - END."); + return tokenSaml; + } + + + /** + * Load cryptographic service provider. + * + * @throws SAMLEngineException the SAML engine exception + */ + public final void loadCryptServiceProvider() throws SAMLEngineException { + LOG.info("Load Cryptographic Service Provider"); + FileInputStream fis = null; + try { + // Dynamically register Bouncy Castle provider. + boolean found = false; + // Check if BouncyCastle is already registered as a provider + final Provider[] providers = Security.getProviders(); + for (int i = 0; i < providers.length; i++) { + if (providers[i].getName().equals( + BouncyCastleProvider.PROVIDER_NAME)) { + found = true; + } + } + + // Register only if the provider has not been previously registered + if (!found) { + LOG.info("SAMLCore: Register Bouncy Castle provider."); + Security.insertProviderAt(new BouncyCastleProvider(), Security + .getProviders().length); + } + + storkOwnKeyStore = KeyStore.getInstance(properties + .getProperty(KEYSTORE_TYPE)); + + LOG.info("Loading KeyInfo from keystore file " + properties.getProperty("keystorePath")); + fis = new FileInputStream(properties + .getProperty("keystorePath")); + + storkOwnKeyStore.load(fis, properties.getProperty( + KEY_STORE_PASS).toCharArray()); + + } catch (Exception e) { + LOG.error("Error loading CryptographicServiceProvider", e); + throw new SAMLEngineException( + "Error loading CryptographicServiceProvider", e); + } finally { + IOUtils.closeQuietly(fis); + } + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java new file mode 100644 index 000000000..a60515593 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesBuilder.java @@ -0,0 +1,41 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectBuilder; + +import eu.stork.peps.auth.engine.core.SAMLCore; +import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; + +/** + * The Class VIDPAuthenticationAttributesBuilder. + * + * @author fjquevedo + */ +public final class VIDPAuthenticationAttributesBuilder extends AbstractSAMLObjectBuilder { + + + /** {@inheritDoc} */ + public VIDPAuthenticationAttributes buildObject() { + return buildObject(SAMLCore.STORK10P_NS.getValue(), VIDPAuthenticationAttributes.DEF_LOCAL_NAME, SAMLCore.STORK10P_PREFIX.getValue()); + } + + /** {@inheritDoc} */ + public VIDPAuthenticationAttributes buildObject(final String namespaceURI, final String localName, final String namespacePrefix) { + return new VIDPAuthenticationAttributesImpl(namespaceURI, localName, namespacePrefix); + } + +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java new file mode 100644 index 000000000..25737e307 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesImpl.java @@ -0,0 +1,132 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import org.opensaml.common.impl.AbstractSignableSAMLObject; +import org.opensaml.xml.XMLObject; + +import eu.stork.peps.auth.engine.core.CitizenCountryCode; +import eu.stork.peps.auth.engine.core.SPInformation; +import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * The Class VIDPAuthenticationAttributesImpl. + * + * @author fjquevedo + */ +public final class VIDPAuthenticationAttributesImpl extends AbstractSignableSAMLObject implements +VIDPAuthenticationAttributes { + + private static final Logger LOGGER = LoggerFactory.getLogger(VIDPAuthenticationAttributesImpl.class.getName()); + /** The citizen country code. */ + private CitizenCountryCode citizenCountryCode; + + /** The SP information. */ + private SPInformation spInformation; + + /** + * Instantiates a new requested attributes implement. + * + * @param namespaceURI the namespace URI + * @param elementLocalName the element local name + * @param namespacePrefix the namespace prefix + */ + protected VIDPAuthenticationAttributesImpl(final String namespaceURI, + final String elementLocalName, final String namespacePrefix) { + super(namespaceURI, elementLocalName, namespacePrefix); + } + + + /** + * getCitizenCountryCode. + * + * @return the citizen country code + */ + public CitizenCountryCode getCitizenCountryCode() { + return citizenCountryCode; + } + + /** + * getSPInformation + * + * @return the SP information + */ + public SPInformation getSPInformation() { + return spInformation; + } + + /** + * Gets the ordered children. + * + * @return the ordered children + * + */ + public List getOrderedChildren() { + final ArrayList children = new ArrayList(); + + children.add(citizenCountryCode); + children.add(spInformation); + + if (getSignature() != null) { + children.add(getSignature()); + } + + return Collections.unmodifiableList(children); + + } + + /** + * Gets the signature reference id. + * + * @return the signature reference id + * + */ + public String getSignatureReferenceID() { + return null; + } + + /** + * Sets the citizen country code. + * + * @param newCitizenCountryCode the new citizen country code + * + */ + public void setCitizenCountryCode(CitizenCountryCode newCitizenCountryCode) { + this.citizenCountryCode = prepareForAssignment(this.citizenCountryCode, newCitizenCountryCode); + } + + /** + * Sets the SP information. + * + * @param newSPInformation the new SP information + * + */ + public void setSPInformation(SPInformation newSPInformation) { + this.spInformation = prepareForAssignment(this.spInformation, newSPInformation); + } + + @Override + public int hashCode() { + LOGGER.warn("Hashcode has been called, passed to super. Nothing foreseen here"); + return super.hashCode(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java new file mode 100644 index 000000000..5635ddd6b --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesMarshaller.java @@ -0,0 +1,33 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectMarshaller; + +/** + * The Class VIDPAuthenticationAttributesMarshaller. + * + * @author fjquevedo + */ +public class VIDPAuthenticationAttributesMarshaller extends AbstractSAMLObjectMarshaller { + + /** + * Instantiates a new vIDP authentication attributes marshaller. + */ + public VIDPAuthenticationAttributesMarshaller() { + super(); + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java new file mode 100644 index 000000000..ba4a4fe3a --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/VIDPAuthenticationAttributesUnmarshaller.java @@ -0,0 +1,55 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.impl; + +import org.opensaml.common.impl.AbstractSAMLObjectUnmarshaller; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.UnmarshallingException; + +import eu.stork.peps.auth.engine.core.CitizenCountryCode; +import eu.stork.peps.auth.engine.core.SPInformation; +import eu.stork.peps.auth.engine.core.VIDPAuthenticationAttributes; + +/** + * The Class VIDPAuthenticationAttributesUnmarshaller. + * + * @author fjquevedo + */ +public class VIDPAuthenticationAttributesUnmarshaller extends + AbstractSAMLObjectUnmarshaller { + + /** + * Process child element. + * + * @param parentObject the parent object + * @param childObject the child object + * + * @throws UnmarshallingException the unmarshalling exception + * + */ + protected final void processChildElement(final XMLObject parentObject, + final XMLObject childObject) throws UnmarshallingException { + final VIDPAuthenticationAttributes vIDPAuthenticationAttr = (VIDPAuthenticationAttributes) parentObject; + + if (childObject instanceof CitizenCountryCode) { + vIDPAuthenticationAttr.setCitizenCountryCode((CitizenCountryCode) childObject); + } else if (childObject instanceof SPInformation) { + vIDPAuthenticationAttr.setSPInformation((SPInformation) childObject); + } else { + super.processChildElement(parentObject, childObject); + } + } +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java new file mode 100644 index 000000000..07db9c9db --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/impl/package-info.java @@ -0,0 +1,19 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Implementations of STORK 1.0 core specification types and elements. + */ +package eu.stork.peps.auth.engine.core.impl; \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/package-info.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/package-info.java new file mode 100644 index 000000000..51745d796 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/package-info.java @@ -0,0 +1,19 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Interfaces for STORK 1.0 core specification types and elements. + */ +package eu.stork.peps.auth.engine.core; \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java new file mode 100644 index 000000000..c602ad38a --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/CustomAttributeQueryValidator.java @@ -0,0 +1,69 @@ +package eu.stork.peps.auth.engine.core.validator; + +import org.opensaml.xml.util.DatatypeHelper; +import org.opensaml.xml.validation.ValidationException; +import org.opensaml.xml.validation.Validator; + +import eu.stork.peps.auth.engine.core.CustomAttributeQuery; + +public class CustomAttributeQueryValidator implements Validator { + + /** + * Validate action. + * + * @param attrQuery the attribute query to validate + * + * @throws ValidationException the validation exception + */ + public final void validate(final CustomAttributeQuery attrQuery) throws ValidationException { + validateAssertion(attrQuery); + validateSubject(attrQuery); + validateDestination(attrQuery); + } + + + /** + * Validate assertion. + * + * @param attrQuery the attribute query + * + * @throws ValidationException the validation exception + */ + protected final void validateAssertion(final CustomAttributeQuery attrQuery) + throws ValidationException { + if (DatatypeHelper.isEmpty(attrQuery.getAssertionConsumerServiceURL())) { + throw new ValidationException("Consumer Service URL must be specified."); + } + } + + /** + * Validate subject + * @param query the attribute query to validate + * @throws ValidationException the validation exception + */ + protected void validateSubject(CustomAttributeQuery query) throws ValidationException { + if (query.getSubject() == null) + throw new ValidationException("Subject is required"); + } + + /** + * Validate the destination + * @param query the query to validate + * @throws ValidationException the validation exception + */ + protected void validateDestination(CustomAttributeQuery query) throws ValidationException { + if (query.getDestination() == null) + throw new ValidationException("Destination is required"); + } + + /** + * Validate the destination + * @param query the query to validate + * @throws ValidationException the validation exception + */ + protected void validateTime(CustomAttributeQuery query) throws ValidationException { + if (query.getIssueInstant().isAfterNow()) + throw new ValidationException("Issue time is in the futue"); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java new file mode 100644 index 000000000..491549aac --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/ExtensionsSchemaValidator.java @@ -0,0 +1,61 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.validator; + +import java.util.List; + +import org.opensaml.saml2.common.Extensions; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.validation.ValidationException; +import org.opensaml.xml.validation.Validator; + +import eu.stork.peps.auth.engine.core.QAAAttribute; + +/** + * The Class ExtensionsSchemaValidator. + * + * @author fjquevedo + */ +public class ExtensionsSchemaValidator implements Validator { + + + /** + * validate the extensions. + * + * @param extensions the extensions + * + * @throws ValidationException the validation exception + */ + public final void validate(final Extensions extensions) + throws ValidationException { + if (extensions.getUnknownXMLObjects() == null + || extensions.getUnknownXMLObjects().size() <= 0) { + throw new ValidationException("Extension element is empty or not exist."); + } + + List qaa = extensions.getUnknownXMLObjects(QAAAttribute.DEF_ELEMENT_NAME); + + if (qaa.size() == 1) { + final Validator validatorQaa = new QAAAttributeSchemaValidator(); + validatorQaa.validate((QAAAttribute) qaa.get(0)); + } else { + throw new ValidationException( + "Extensions must contain only one element QAALevel."); + } + + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java new file mode 100644 index 000000000..72639c8ee --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/MultipleAssertionResponseValidator.java @@ -0,0 +1,80 @@ +package eu.stork.peps.auth.engine.core.validator; + +import org.opensaml.saml2.core.Response; +import org.opensaml.xml.validation.ValidationException; +import org.opensaml.xml.validation.Validator; + + +public class MultipleAssertionResponseValidator implements Validator { + + /** + * Validate action. + * + * @param response the response to validate + * + * @throws ValidationException the validation exception + */ + public final void validate(final Response response) throws ValidationException { + validateAssertion(response); + validateConsent(response); + validateDestination(response); + validateTime(response); + validateId(response); + } + + + /** + * Validate assertion. + * + * @param response the attribute query + * + * @throws ValidationException the validation exception + */ + protected final void validateAssertion(final Response response) + throws ValidationException { + if (response.getAssertions() == null || response.getAssertions().size() < 2) { + throw new ValidationException("Multiple assertions must be specified."); + } + } + + /** + * Validate the Consent + * @param response the response to validate + * @throws ValidationException the validation exception + */ + protected void validateConsent(Response response) throws ValidationException { + if (response.getConsent() == null) + throw new ValidationException("Consent is required"); + } + + /** + * Validate the destination + * @param response the response to validate + * @throws ValidationException the validation exception + */ + protected void validateDestination(Response response) throws ValidationException { + if (response.getDestination() == null) + throw new ValidationException("Destination is required"); + } + + /** + * Validate issue times + * @param response the response to validate + * @throws ValidationException the validation exception + */ + protected void validateTime(Response response) throws ValidationException { + if (response.getIssueInstant().isAfterNow()) + throw new ValidationException("Issue time is in the futue"); + } + + /** + * Validate ids + * @param response the response to validate + * @throws ValidationException the validation exception + */ + protected void validateId(Response response) throws ValidationException { + if (response.getID() == null || response.getInResponseTo() == null) + throw new ValidationException("Id and response id is required"); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java new file mode 100644 index 000000000..44c9db380 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/QAAAttributeSchemaValidator.java @@ -0,0 +1,65 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.auth.engine.core.validator; + +import org.opensaml.xml.util.DatatypeHelper; +import org.opensaml.xml.validation.ValidationException; +import org.opensaml.xml.validation.Validator; + +import eu.stork.peps.auth.engine.core.QAAAttribute; + +/** + * The Class QAAAttributeSchemaValidator. + * + * @author fjquevedo + */ +public class QAAAttributeSchemaValidator implements Validator { + + + /** + * Validate action. + * + * @param qaa the quality authentication assurance level attribute + * + * @throws ValidationException the validation exception + */ + public final void validate(final QAAAttribute qaa) throws ValidationException { + validateAction(qaa); + } + + + /** + * Validate action. + * + * @param qaaAttribute the quality authentication assurance level attribute. + * + * @throws ValidationException the validation exception + */ + protected final void validateAction(final QAAAttribute qaaAttribute) + throws ValidationException { + if (DatatypeHelper.isEmpty(qaaAttribute.getQaaLevel())) { + throw new ValidationException("QAALevel label must be specified."); + } + + final int qaa = Integer.valueOf(qaaAttribute.getQaaLevel()); + + if (qaa < QAAAttribute.MIN_VALUE || qaa > QAAAttribute.MAX_VALUE) { + throw new ValidationException( + "QAALevel label must be greater than 0."); + } + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java new file mode 100644 index 000000000..07b632773 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/core/validator/package-info.java @@ -0,0 +1,19 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Validation rules for STORK 1.0 core types and elements. + */ +package eu.stork.peps.auth.engine.core.validator; \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/package-info.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/package-info.java new file mode 100644 index 000000000..30130b7f6 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/auth/engine/package-info.java @@ -0,0 +1,19 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Provides the classes necessary to create a SAML message. + */ +package eu.stork.peps.auth.engine; \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java new file mode 100644 index 000000000..c53e18662 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationCreator.java @@ -0,0 +1,142 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.configuration; + +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import org.apache.commons.io.IOUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.InvalidPropertiesFormatException; +import java.util.Map; +import java.util.Properties; + +/** + * The Class InstanceCreator. + * + * @author fjquevedo + */ +public final class ConfigurationCreator { + + /** + * The Constant LOGGER. + */ + private static final Logger LOGGER = LoggerFactory + .getLogger(ConfigurationCreator.class.getName()); + + /** + * Creates the configuration. + * + * @param instanceConfs the instance configuration + * @return the map< string, map< string, object>> + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public static Map> createConfiguration( + final Map instanceConfs) throws STORKSAMLEngineException { + + final HashMap> instances = + new HashMap>(); + + LOGGER.info("Create configuration."); + try { + // Only create instances for SAMLEngine configuration. + // INSTANCE + for (Map.Entry entry : instanceConfs + .entrySet()) { + final InstanceEngine iEngine = entry.getValue(); + + final Map intance = new HashMap(); + + // CONFIGURATION + for (ConfigurationEngine configuration : iEngine + .getConfiguration()) { + // Properties only for configuration SamlEngine. + if (configuration.getName().equalsIgnoreCase( + "SamlEngineConf")) { + intance.put(configuration.getName(), + getNewInstance(configuration.getParameters() + .get("fileConfiguration"))); + } else { + intance.put(configuration.getName(), configuration + .getParameters()); + } + } + instances.put(entry.getKey(), intance); + } + } catch (STORKSAMLEngineException ex) { + LOGGER.error("Can not create instance from file configuration."); + throw new STORKSAMLEngineException(ex); + } + return instances; + } + + + /** + * Gets the new instance. + * + * @param fileName the file name + * @return the properties from the new instance + * @throws STORKSAMLEngineException the STORKSAML engine + * runtime exception + */ + private static Properties getNewInstance(final String fileName) + throws STORKSAMLEngineException { + InputStream fileEngineProp = null; + + // fetch base from system properties, give a default if there is nothing configured + String base = System.getProperty("eu.stork.samlengine.config.location"); + if (null != base) { + if (!base.endsWith("/")) { + base += "/"; + } + } else { + base = "/"; + } + + LOGGER.info("Create file configuration properties to Stork Saml Engine: " + base + fileName); + + try { + + if (null != base) + fileEngineProp = new FileInputStream(base + fileName); + else + fileEngineProp = ConfigurationCreator.class + .getResourceAsStream(base + fileName); + + final Properties configuration = new Properties(); + configuration.loadFromXML(fileEngineProp); + return configuration; + } catch (InvalidPropertiesFormatException e) { + LOGGER.error("Invalid properties format."); + throw new STORKSAMLEngineException(e); + } catch (IOException e) { + LOGGER.error("Error read file: " + base + fileName); + throw new STORKSAMLEngineException(e); + } finally { + IOUtils.closeQuietly(fileEngineProp); + } + } + + /** + * Instantiates a new instance creator. + */ + private ConfigurationCreator() { + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java new file mode 100644 index 000000000..d9e7e467a --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationEngine.java @@ -0,0 +1,69 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.configuration; + +import java.util.Map; + +/** + * The Class ConfigurationEngine. + * + * @author fjquevedo + */ +public class ConfigurationEngine { + + /** The name of the configuration file. */ + private String name; + + /** The parameters. */ + private Map parameters; + + /** + * Gets the name. + * + * @return the name + */ + public final String getName() { + return name; + } + + /** + * Gets the parameters. + * + * @return the parameters + */ + public final Map getParameters() { + return parameters; + } + + /** + * Sets the name. + * + * @param newName the new name + */ + public final void setName(final String newName) { + this.name = newName; + } + + /** + * Sets the parameters. + * + * @param newParameters the parameters + */ + public final void setParameters(final Map newParameters) { + this.parameters = newParameters; + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java new file mode 100644 index 000000000..7968c77ff --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationReader.java @@ -0,0 +1,234 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.configuration; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; + +import javax.xml.XMLConstants; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import eu.stork.peps.exceptions.SAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; + +/** + * The Class ConfigurationReader. + * + * @author fjquevedo + */ +public final class ConfigurationReader { + + /** The Constant SAML_ENGINE_CONFIGURATION_FILE. */ + private static final String ENGINE_CONF_FILE = "SamlEngine.xml"; + + /** The Constant LOGGER. */ + private static final Logger LOGGER = LoggerFactory + .getLogger(ConfigurationReader.class.getName()); + + /** The Constant NODE_CONFIGURATION. */ + private static final String NODE_CONF = "configuration"; + + /** The Constant NODE_CONFIGURATION_NAME. */ + private static final String NODE_CONF_NAME = "name"; + + /** The Constant NODE_INSTANCE_NAME. */ + private static final String NODE_INST_NAME = "name"; + + /** The Constant NODE_INSTANCE. */ + private static final String NODE_INSTANCE = "instance"; + + /** The Constant NODE_CONFIGURATION_NAME. */ + private static final String NODE_PARAM_NAME = "name"; + + /** The Constant NODE_CONFIGURATION_NAME. */ + private static final String NODE_PARAM_VALUE = "value"; + + /** The Constant NODE_CONFIGURATION_NAME. */ + private static final String NODE_PARAMETER = "parameter"; + + /** + * Generate parameters. + * + * @param configurationNode the configuration node + * + * @return the map< string, string> + */ + private static Map generateParam( + final Element configurationNode) { + + final HashMap parameters = new HashMap(); + + final NodeList parameterNodes = configurationNode + .getElementsByTagName(NODE_PARAMETER); + + String parameterName; + String parameterValue; + + for (int k = 0; k < parameterNodes.getLength(); ++k) { + // for every parameter find, process. + final Element parameterNode = (Element) parameterNodes.item(k); + parameterName = parameterNode.getAttribute(NODE_PARAM_NAME); + parameterValue = parameterNode.getAttribute(NODE_PARAM_VALUE); + + // verified the content. + if (StringUtils.isBlank(parameterName) + || StringUtils.isBlank(parameterValue)) { + throw new STORKSAMLEngineRuntimeException( + "Error reader parameters (name - value)."); + } else { + parameters.put(parameterName.trim(), parameterValue.trim()); + } + } + return parameters; + } + + /** + * Read configuration. + * + * @return the map< string, instance engine> + * + * @throws SAMLEngineException the STORKSAML engine runtime + * exception + */ + public static Map readConfiguration() + throws SAMLEngineException { + + // fetch base from system properties, give a default if there is nothing configured + String base = System.getProperty("eu.stork.samlengine.config.location"); + if(null != base) + if(!base.endsWith("/")) + base += "/"; + + + LOGGER.info("Init reader: " + base + ENGINE_CONF_FILE); + final Map instanceConfs = + new HashMap(); + + Document document = null; + // Load configuration file + final DocumentBuilderFactory factory = DocumentBuilderFactory + .newInstance(); + DocumentBuilder builder; + + InputStream engineConf = null; + try { + + factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + + builder = factory.newDocumentBuilder(); + + if (null != base) + engineConf = new FileInputStream(base + ENGINE_CONF_FILE); + else + engineConf = ConfigurationReader.class.getResourceAsStream("/" + ENGINE_CONF_FILE); + + document = builder.parse(engineConf); + + // Read instance + final NodeList list = document.getElementsByTagName(NODE_INSTANCE); + + for (int indexElem = 0; indexElem < list.getLength(); ++indexElem) { + final Element element = (Element) list.item(indexElem); + + final InstanceEngine instanceConf = new InstanceEngine(); + + // read every configuration. + final String instanceName = element + .getAttribute(NODE_INST_NAME); + + if (StringUtils.isBlank(instanceName)) { + throw new STORKSAMLEngineRuntimeException( + "Error reader instance name."); + } + instanceConf.setName(instanceName.trim()); + + final NodeList confNodes = element + .getElementsByTagName(NODE_CONF); + + for (int indexNode = 0; indexNode < confNodes.getLength(); ++indexNode) { + + final Element configurationNode = (Element) confNodes + .item(indexNode); + + final String configurationName = configurationNode + .getAttribute(NODE_CONF_NAME); + + if (StringUtils.isBlank(configurationName)) { + throw new STORKSAMLEngineRuntimeException( + "Error reader configuration name."); + } + + final ConfigurationEngine confSamlEngine = + new ConfigurationEngine(); + + // Set configuration name. + confSamlEngine.setName(configurationName.trim()); + + // Read every parameter for this configuration. + final Map parameters = + generateParam(configurationNode); + + // Set parameters + confSamlEngine.setParameters(parameters); + + // Add parameters to the configuration. + instanceConf.getConfiguration().add(confSamlEngine); + } + + // Add to the list of configurations. + instanceConfs.put(element.getAttribute(NODE_INST_NAME), + instanceConf); + } + + } catch (SAXException e) { + LOGGER.error("Error: init library parser."); + throw new SAMLEngineException(e); + } catch (ParserConfigurationException e) { + LOGGER.error("Error: parser configuration file xml."); + throw new SAMLEngineException(e); + } catch (IOException e) { + LOGGER.error("Error: read configuration file."); + throw new SAMLEngineException(e); + } finally { + IOUtils.closeQuietly(engineConf); + } + + return instanceConfs; + } + + /** + * Instantiates a new configuration reader. + */ + private ConfigurationReader() { + + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java new file mode 100644 index 000000000..d00607853 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/ConfigurationSingleton.java @@ -0,0 +1,74 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.configuration; + +import java.util.Map; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.exceptions.SAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineException; +import eu.stork.peps.exceptions.STORKSAMLEngineRuntimeException; + +/** + * The Class InstanceCreator. + * + * @author fjquevedo + */ +public final class ConfigurationSingleton { + + /** The instance of every engine SAML. */ + private static Map instanceConfigs; + + /** The instances of SAML engine. */ + private static Map> instances; + + /** The Constant LOGGER. */ + private static final Logger LOGGER = LoggerFactory + .getLogger(ConfigurationSingleton.class.getName()); + + static { + LOGGER.debug("Read all file configurations. (instances of SAMLEngine)"); + try { + instanceConfigs = ConfigurationReader.readConfiguration(); + } catch (SAMLEngineException e) { + LOGGER.error("Error read configuration file."); + throw new STORKSAMLEngineRuntimeException(e); + } + } + + /** + * Gets the new instance. + * + * @param fileName the file name + * + * @return the properties from the new instance + * + * @throws STORKSAMLEngineException the STORKSAML engine runtime exception + */ + private static Map> getInstance( + final String fileName) throws STORKSAMLEngineException { + return ConfigurationCreator.createConfiguration(instanceConfigs); + } + + /** + * Instantiates a new instance creator. + */ + private ConfigurationSingleton() { + } + +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/InstanceEngine.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/InstanceEngine.java new file mode 100644 index 000000000..4d9bba8e7 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/InstanceEngine.java @@ -0,0 +1,70 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.configuration; + +import java.util.ArrayList; +import java.util.List; + +/** + * The Class InstanceConfiguration. + * + * @author fjquevedo + */ +public class InstanceEngine { + + /** The configuration. */ + private List configuration = new ArrayList(); + + /** The name. */ + private String name; + + /** + * Gets the parameters. + * + * @return the parameters + */ + public final List getConfiguration() { + return this.configuration; + } + + /** + * Gets the name. + * + * @return the name + */ + public final String getName() { + return name; + } + + /** + * Sets the parameters. + * + * @param newConfiguration the new parameters + */ + public final void setConfiguration(final List newConfiguration) { + this.configuration = newConfiguration; + } + + /** + * Sets the name. + * + * @param newName the new name + */ + public final void setName(final String newName) { + this.name = newName; + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/package-info.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/package-info.java new file mode 100644 index 000000000..344368e03 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/configuration/package-info.java @@ -0,0 +1,19 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Provides the classes necessary to create a SAML message instance. + */ +package eu.stork.peps.configuration; diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java new file mode 100644 index 000000000..ac46f73e4 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/SAMLEngineException.java @@ -0,0 +1,57 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.exceptions; + +/** + * The Class SAMLEngineException. + * + * @author fjquevedo + */ +public class SAMLEngineException extends Exception { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 2611361164977849837L; + + /** + * Instantiates a new SAMLEngine exception. + * + * @param wrappedException the wrapped exception + */ + public SAMLEngineException(final Exception wrappedException) { + super(wrappedException); + } + + /** + * Instantiates a new SAMLEngine exception. + * + * @param message the message + */ + public SAMLEngineException(final String message) { + super(message); + } + + /** + * Instantiates a new SAMLEngine exception. + * + * @param message the message + * @param wrappedException the wrapped exception + */ + public SAMLEngineException(final String message, + final Exception wrappedException) { + super(message, wrappedException); + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java new file mode 100644 index 000000000..bddcbd1b3 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineException.java @@ -0,0 +1,135 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.exceptions; + +/** + * The Class STORKSAMLEngineException. + * + * @author fjquevedo + */ +public class STORKSAMLEngineException extends Exception { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = -8319723167019122930L; + + /** The error code. */ + private String errorCode; + + /** The error detail. */ + private String errorDetail; + + /** + * Instantiates a new sTORKSAML engine exception. + * + * @param wrappedException the wrapped exception + */ + public STORKSAMLEngineException(final Exception wrappedException) { + super(wrappedException); + } + + /** + * Instantiates a new sTORKSAML engine exception. + * + * @param errorMessage the error message + */ + public STORKSAMLEngineException(final String errorMessage) { + super(errorMessage); + } + + /** + * Instantiates a new sTORKSAML engine exception. + * + * @param message the message + * @param wrappedException the wrapped exception + */ + public STORKSAMLEngineException(final String message, + final Exception wrappedException) { + super(message, wrappedException); + } + + /** + * Instantiates a new sTORKSAML engine exception. + * + * @param newErrorCode the error code + * @param errorMessage the error message + * @param newErrorDetail the error detail + */ + public STORKSAMLEngineException(final String newErrorCode, + final String errorMessage, final String newErrorDetail) { + super(errorMessage); + this.errorCode = newErrorCode; + this.errorDetail = newErrorDetail; + } + + /** + * Gets the error code. + * + * @return the error code + */ + public final String getErrorCode() { + return this.errorCode; + } + + /** + * Gets the error detail. + * + * @return the error detail + */ + public final String getErrorDetail() { + return errorDetail; + } + + /** + * Gets the error message. + * + * @return the error message + */ + public final String getErrorMessage() { + return super.getMessage(); + } + + + /** + * Gets the message. + * + * @return the message of the exception. + * + * @see java.lang.Throwable#getMessage() + */ + public final String getMessage() { + return "Error (no. " + errorCode + ") processing request : " + + super.getMessage(); + } + + /** + * Sets the error code. + * + * @param newErrorCode the new error code + */ + public final void setErrorCode(final String newErrorCode) { + this.errorCode = newErrorCode; + } + + /** + * Sets the error detail. + * + * @param newErrorDetail the new error detail + */ + public final void setErrorDetail(final String newErrorDetail) { + this.errorDetail = newErrorDetail; + } + +} diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java new file mode 100644 index 000000000..fb01fd5aa --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/STORKSAMLEngineRuntimeException.java @@ -0,0 +1,56 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.exceptions; + +/** + * The Class STORKSAMLEngineRuntimeException. + * + * @author fjquevedo + */ +public class STORKSAMLEngineRuntimeException extends RuntimeException { + + /** The Constant serialVersionUID. */ + private static final long serialVersionUID = 5829810358581493517L; + + /** + * Instantiates a new sTORKSAML engine runtime exception. + * + * @param wrappedException the wrapped exception + */ + public STORKSAMLEngineRuntimeException(final Exception wrappedException) { + super(wrappedException); + } + + /** + * Creates a new instance of application exception. + * + * @param cause the exception cause. + */ + public STORKSAMLEngineRuntimeException(final String cause) { + super(cause); + } + + /** + * Instantiates a new sTORKSAML engine runtime exception. + * + * @param message the message + * @param wrappedException the wrapped exception + */ + public STORKSAMLEngineRuntimeException(final String message, + final Exception wrappedException) { + super(message, wrappedException); + } +} \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/package-info.java b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/package-info.java new file mode 100644 index 000000000..0c7341995 --- /dev/null +++ b/id/server/stork2-saml-engine/src/main/java/eu/stork/peps/exceptions/package-info.java @@ -0,0 +1,19 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Provides the classes for STORK exceptions management. + */ +package eu.stork.peps.exceptions; \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java new file mode 100644 index 000000000..eb885eea9 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SSETestUtils.java @@ -0,0 +1,173 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.test.simple; + +import java.io.IOException; +import java.io.InputStream; +import java.io.StringWriter; + +import javax.xml.XMLConstants; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.apache.commons.io.IOUtils; +import org.bouncycastle.util.encoders.Base64; +import org.opensaml.Configuration; +import org.opensaml.xml.XMLObject; +import org.opensaml.xml.io.Marshaller; +import org.opensaml.xml.io.MarshallerFactory; +import org.opensaml.xml.io.MarshallingException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +/** + * The Class SSETestUtils. + */ +public final class SSETestUtils { + + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(SSETestUtils.class.getName()); + + /** + * Instantiates a new sSE test utils. + */ + private SSETestUtils() { + } + + /** + * Prints the tree DOM. + * + * @param samlToken the SAML token + * @param isIndent the is indent + * + * @return the string + * @throws TransformerException the exception + */ + public static String printTreeDOM(final Element samlToken, final boolean isIndent) throws TransformerException { + // set up a transformer + final TransformerFactory transfac = TransformerFactory.newInstance(); + final Transformer trans = transfac.newTransformer(); + trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); + trans.setOutputProperty(OutputKeys.INDENT, String.valueOf(isIndent)); + + // create string from XML tree + final StringWriter stringWriter = new StringWriter(); + final StreamResult result = new StreamResult(stringWriter); + final DOMSource source = new DOMSource(samlToken); + trans.transform(source, result); + final String xmlString = stringWriter.toString(); + + return xmlString; + } + + /** + * Marshall. + * + * @param samlToken the SAML token + * + * @return the byte[] + * + * @throws MarshallingException the marshalling exception + * @throws ParserConfigurationException the parser configuration exception + * @throws TransformerException the transformer exception + */ + public static byte[] marshall(final XMLObject samlToken) + throws MarshallingException, ParserConfigurationException, + TransformerException { + + final javax.xml.parsers.DocumentBuilderFactory dbf = javax.xml.parsers.DocumentBuilderFactory + .newInstance(); + dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + dbf.setNamespaceAware(true); + dbf.setIgnoringComments(true); + final javax.xml.parsers.DocumentBuilder docBuild = dbf + .newDocumentBuilder(); + + // Get the marshaller factory + final MarshallerFactory marshallerFactory = Configuration + .getMarshallerFactory(); + + // Get the Subject marshaller + final Marshaller marshaller = marshallerFactory + .getMarshaller(samlToken); + + final Document doc = docBuild.newDocument(); + + // Marshall the SAML token + marshaller.marshall(samlToken, doc); + + // Obtain a byte array representation of the marshalled SAML object + final DOMSource domSource = new DOMSource(doc); + final StringWriter writer = new StringWriter(); + final StreamResult result = new StreamResult(writer); + final TransformerFactory transFact = TransformerFactory.newInstance(); + final Transformer transformer = transFact.newTransformer(); + transformer.transform(domSource, result); + + return writer.toString().getBytes(); + } + + /** + * Encode SAML token. + * + * @param samlToken the SAML token + * + * @return the string + */ + public static String encodeSAMLToken(final byte[] samlToken) { + return new String(Base64.encode(samlToken)); + } + + /** + * Read stork SAML from file. + * + * @param resource the resource + * + * @return the byte[] + * @throws IOException the exception + * + */ + public static byte[] readStorkSamlFromFile(final String resource) + throws IOException { + InputStream inputStream = null; + byte[] bytes; + + try { + inputStream = StorkAuthRequestTest.class + .getResourceAsStream(resource); + + // Create the byte array to hold the data + bytes = new byte[(int) inputStream.available()]; + inputStream.read(bytes); + } catch (IOException e) { + LOG.error("Error read from file: " + resource); + throw e; + } finally { + IOUtils.closeQuietly(inputStream); + } + return bytes; + + } +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java new file mode 100644 index 000000000..c52b8a779 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/SimpleBaseTest.java @@ -0,0 +1,64 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.test.simple; + +import org.junit.Test; + +import junit.framework.Assert; +import junit.framework.TestCase; +import eu.stork.peps.auth.engine.STORKSAMLEngine; + +/** + * The Class SimpleBaseTest. Defines a set of test the initialization of the + * SAML engine. + */ +@SuppressWarnings("deprecation") +public class SimpleBaseTest extends TestCase { + + /** + * Test SAML engine correct configuration name. + */ + + @Test + public final void testSamlEngineCorrectInit() { + Assert.assertNotNull(STORKSAMLEngine.getInstance("CONF1")); + } + + /** + * Test SAML engine error configuration name. + */ + @Test + public final void testSamlEngineErrorNameConf() { + Assert.assertNull(STORKSAMLEngine.getInstance("CONF_ERROR")); + } + + /** + * Test SAML engine error name null. + */ + @Test + public final void testSamlEngineErrorNameNull() { + Assert.assertNull(STORKSAMLEngine.getInstance(null)); + } + + /** + * Test SAML engine correct name configuration with spaces. + */ + @Test + public final void testSamlEngineErrorNameSpaces() { + Assert.assertNotNull(STORKSAMLEngine.getInstance(" CONF1 ")); + } + +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java new file mode 100644 index 000000000..0eda1bfbf --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryRequestTest.java @@ -0,0 +1,864 @@ +package eu.stork.peps.test.simple; + +import static org.junit.Assert.*; + +import java.io.*; +import java.util.ArrayList; +import java.util.Arrays; + +import org.junit.Ignore; +import org.junit.Test; +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAttrQueryRequest; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + +public class StorkAttrQueryRequestTest { + + /** The engines. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); + private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); + private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); + + + /** + * Instantiates a new stork authentication request test. + */ + public StorkAttrQueryRequestTest() { + pal = new PersonalAttributeList(); + + final PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + final ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + pal.add(isAgeOver); + + final PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + pal.add(dateOfBirth); + + final PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + eIDNumber.setValue(Arrays.asList("ES/IS/1234567890")); + pal.add(eIDNumber); + + final PersonalAttribute givenName = new PersonalAttribute(); + givenName.setName("givenName"); + givenName.setIsRequired(true); + givenName.setValue(Arrays.asList("Sveinbjorn")); + pal.add(givenName); + + destination = "http://A-PEPS.gov.xx/PEPS/AttributeColleagueRequest"; + assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; + //spName = "University of Oxford"; + spSector = "EDU001"; + spInstitution = "OXF001"; + spApplication = "APP001"; + spCountry = "IS"; + + spId = "EDU001-OXF001-APP001"; + + } + + /** The destination. */ + private String destination; + + /** The service provider sector. */ + private String spSector; + + /** The service provider institution. */ + private String spInstitution; + + /** The service provider application. */ + private String spApplication; + + /** The service provider country. */ + private String spCountry; + + /** The service provider id. */ + private String spId; + + /** The assertion consumer URL. */ + private String assertConsumerUrl; + + /** The quality authentication assurance level. */ + private static final int QAAL = 3; + + /** The List of Personal Attributes. */ + private IPersonalAttributeList pal; + + /** The attribute query request. */ + private static byte[] attrRequest; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkAttrQueryRequestTest.class.getName()); + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + } + + /** + * Test generate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAttrQueryRequest() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + // new parameters + request.setEIDSectorShare(false); + request.setEIDCrossSectorShare(false); + request.setEIDCrossBorderShare(false); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + request.setSpCountry(spCountry); + + STORKAttrQueryRequest req1 = engine0.generateSTORKAttrQueryRequest(request); + byte[] reqByte = req1.getTokenSaml(); + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(reqByte); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + LOG.info("STORKAttrQueryRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); + + request.setCitizenCountryCode("IS"); + LOG.info("STORKAttrQueryRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); + } + + /** + * Test generate authentication request error personal attribute name error. + */ + @Test + public final void testGenerateAttrQueryRequestPALsErr1() { + + final IPersonalAttributeList palWrong = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("attrNotValid"); + worngAttr.setIsRequired(true); + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(palWrong); + + // news parameters + request.setEIDSectorShare(false); + request.setEIDCrossSectorShare(false); + request.setEIDCrossBorderShare(false); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + + /** + * Test generate authentication request error personal attribute value error. + */ + @Test + public final void testGenerateAttrQueryRequestPALsErr2() { + + final IPersonalAttributeList palWrong = new PersonalAttributeList(); + + final PersonalAttribute attrNotValid = new PersonalAttribute(); + attrNotValid.setName("attrNotValid"); + attrNotValid.setIsRequired(true); + palWrong.add(attrNotValid); + + + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(palWrong); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request authentication assurance level + * negative value. + */ + @Test + public final void testGenerateAttrQueryRequestQaalErr1() { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(-1); + request.setPersonalAttributeList(pal); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request service provider sector null. + */ + @Test + public final void testGenerateAttrQueryRequestSectorErr() { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(null); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + + } + } + + /** + * Test generate authentication request service provider institution null. + */ + @Test + public final void testGenerateAttrQueryRequestDestinationErr() { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(null); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(null); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAttrQueryRequest(...) should've thrown an STORKSAMLEngineException!"); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request service provider application null. + */ + @Test + public final void testGenerateAttrQueryRequestApplicationErr() { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(null); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } + } + + /** + * Test generate authentication request service provider country null. + */ + @Test + public final void testGenerateAttrQueryRequestCountryErr() { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(null); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request error with quality authentication + * assurance level wrong. + */ + @Test + public final void testGenerateAttrQueryRequestQaalErr2() { + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(0); + request.setPersonalAttributeList(pal); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request personal attribute list null value. + */ + @Test + public final void testGenerateAttrQueryRequestPALErr1() { + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(null); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + engine.generateSTORKAttrQueryRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request null parameter. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryRequestNullParam() + throws STORKSAMLEngineException { + try { + engine.validateSTORKAttrQueryRequest(null); + fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request error bytes encode. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryRequestErrorEncode() + throws STORKSAMLEngineException { + try { + engine.validateSTORKAttrQueryRequest("messageError".getBytes()); + fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryRequest() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + attrRequest = engine.generateSTORKAttrQueryRequest(request).getTokenSaml(); + + final STORKAttrQueryRequest validatedRequest = engine.validateSTORKAttrQueryRequest(attrRequest); + + assertEquals("CrossBorderShare incorrect: ", validatedRequest.isEIDCrossBorderShare(), false); + assertEquals("CrossSectorShare incorrect: ", validatedRequest.isEIDCrossSectorShare(), false); + assertEquals("SectorShare incorrect: ", validatedRequest.isEIDSectorShare(), false); + + } + + /** + * Test validate data authenticate request. Verified parameters after + * validation. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateDataAttrQueryRequest() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = engine.validateSTORKAttrQueryRequest(attrRequest); + + assertEquals("Sestination incorrect: ", request.getDestination(), destination); + + assertEquals("CrossBorderShare incorrect: ", request.isEIDCrossBorderShare(), false); + assertEquals("CrossSectorShare incorrect: ", request.isEIDCrossSectorShare(), false); + assertEquals("SectorShare incorrect: ", request.isEIDSectorShare(), false); + + assertEquals("QAAL incorrect: ", request.getQaa(), QAAL); + assertEquals("SPSector incorrect: ", request.getSpSector(), spSector); + assertEquals("SPInstitution incorrect: ", request.getSpInstitution(), null); + assertEquals("SPApplication incorrect: ", request.getSpApplication(), spApplication); + assertEquals("CitizenCountryCode incorrect: ", request.getCitizenCountryCode(), null); + + } + + /** + * Test validate file attribute query request. Validate from XML file. + * + * @throws Exception the exception + */ + @Test + public final void testValidateFileAttrQueryRequest() throws Exception { + + final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AttrQueryRequest1.xml"); + + try { + engine.validateSTORKAttrQueryRequest(bytes); + fail("testValidateFileAttrQueryRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error(e.getMessage()); + } + } + + /** + * Test validate file authentication request tag delete. + * + * @throws Exception the exception + */ + @Test + public final void testValidateFileAttrRequestTagDelete() throws Exception { + + final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml"); + + try { + engine.validateSTORKAttrQueryRequest(bytes); + fail("validateSTORKAttrQueryRequest(...) should have thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error(e.getMessage()); + + } + } + + /** + * Test validate authentication request not trusted token. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryRequestNotTrustedErr1() + throws STORKSAMLEngineException { + + try { + final STORKSAMLEngine engineNotTrusted = STORKSAMLEngine + .getInstance("CONF2"); + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + + final byte[] authReqNotTrust = engineNotTrusted + .generateSTORKAttrQueryRequest(request).getTokenSaml(); + + engine.validateSTORKAttrQueryRequest(authReqNotTrust); + fail("validateSTORKAttrQueryRequestNotTrusted(...) should have thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request trusted. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryRequestTrusted() + throws STORKSAMLEngineException { + + final STORKSAMLEngine engineTrusted = STORKSAMLEngine + .getInstance("CONF3"); + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + final byte[] authReqNotTrust = engineTrusted.generateSTORKAttrQueryRequest( + request).getTokenSaml(); + + // engine ("CONF1") no have trust certificate from "CONF2" + engine.validateSTORKAttrQueryRequest(authReqNotTrust); + + } + + + + + /** + * Test generate authentication request service provider application null. + */ + @Test + public final void testGenerateAttrQueryRequestNADA() { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + // news parameters + request.setSpSector(null); + request.setSpInstitution(null); + request.setSpApplication(null); + request.setSpCountry(null); + + try { + + engine.validateSTORKAttrQueryRequest(attrRequest); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } + } + + /** + * Test validate authentication request with unknown elements. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryRequestWithUnknownElements() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + IPersonalAttributeList pAttList = new PersonalAttributeList(); + + final PersonalAttribute unknown = new PersonalAttribute(); + unknown.setName("unknown"); + unknown.setIsRequired(true); + pAttList.add(unknown); + + final PersonalAttribute eIdentifier = new PersonalAttribute(); + eIdentifier.setName("eIdentifier"); + eIdentifier.setIsRequired(true); + pAttList.add(eIdentifier); + + request.setPersonalAttributeList(pAttList); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + STORKAttrQueryRequest req = new STORKAttrQueryRequest(); + + req = engine3.generateSTORKAttrQueryRequest(request); + + req = engine.validateSTORKAttrQueryRequest(req.getTokenSaml()); + + assertNull("The value shouldn't exist", req.getPersonalAttributeList().get("unknown")); + assertNotNull("The value should exist", req.getPersonalAttributeList().get("eIdentifier")); + + } + + /** + * Test generate Request with required elements by default + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAttrQueryRequestWithIsRequiredElementsByDefault() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + IPersonalAttributeList pAttList = new PersonalAttributeList(); + + final PersonalAttribute eIdentifier = new PersonalAttribute(); + eIdentifier.setName("eIdentifier"); + eIdentifier.setIsRequired(true); + pAttList.add(eIdentifier); + + request.setPersonalAttributeList(pAttList); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + STORKAttrQueryRequest req = new STORKAttrQueryRequest(); + STORKAttrQueryRequest reqTrue = new STORKAttrQueryRequest(); + STORKAttrQueryRequest reqFalse = new STORKAttrQueryRequest(); + + reqTrue = engine.generateSTORKAttrQueryRequest(request); + reqFalse = engine2.generateSTORKAttrQueryRequest(request); + req = engine3.generateSTORKAttrQueryRequest(request); + + + String token = new String(req.getTokenSaml()); + String reqTrueToken = new String(reqTrue.getTokenSaml()); + String reqFalseToken = new String(reqFalse.getTokenSaml()); + + assertTrue("The token must contain the chain 'isRequired'", token.contains("isRequired")); + assertTrue("The token must contain the chain 'isRequired'", reqTrueToken.contains("isRequired")); + assertFalse("The token must contain the chain 'isRequired'", reqFalseToken.contains("isRequired")); + + } + + /** + * Test validating attribute query and getting alias used to save + * the saml trusted certificate into trustore + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + /*@Test + public final void testValidateAtrrQueryRequestGettingItsAlias() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + + IPersonalAttributeList pAttList = new PersonalAttributeList(); + + final PersonalAttribute eIdentifier = new PersonalAttribute(); + eIdentifier.setName("eIdentifier"); + eIdentifier.setIsRequired(true); + pAttList.add(eIdentifier); + + request.setPersonalAttributeList(pAttList); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + STORKAttrQueryRequest req = new STORKAttrQueryRequest(); + + req = engine3.generateSTORKAttrQueryRequest(request); + req = engine.validateSTORKAttrQueryRequest(req.getTokenSaml()); + String prufa = req.getAlias(); + assertTrue("The alias should match this value", req.getAlias().equals("local-demo")); + + req = engine2.generateSTORKAttrQueryRequest(request); + req = engine2.validateSTORKAttrQueryRequest(req.getTokenSaml()); + assertTrue("The alias should match this value", req.getAlias().equals("local-demo2")); + }*/ + + @Test + public final void testGenerateAttrQueryRequestSignDoc() throws STORKSAMLEngineException { + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + + request.setDestination(destination); + request.setQaa(QAAL); + PersonalAttributeList pal0 = new PersonalAttributeList(); + + final PersonalAttribute signDoc = new PersonalAttribute(); + signDoc.setName("docRequest"); + signDoc.setIsRequired(true); + signDoc.setValue(Arrays.asList("IS/IS/fbea6e68-0393-401b-b616-f767fff9418c")); + pal0.add(signDoc); + + request.setPersonalAttributeList(pal0); + + // new parameters + /*request.setEIDSectorShare(false); + request.setEIDCrossSectorShare(false); + request.setEIDCrossBorderShare(false);*/ + request.setAssertionConsumerServiceURL(assertConsumerUrl); + request.setSpCountry(spCountry); + + STORKAttrQueryRequest req1 = engine0.generateSTORKAttrQueryRequest(request); + byte[] reqByte = req1.getTokenSaml(); + FileOutputStream output = null; + + STORKAttrQueryRequest req2 = engine0.validateSTORKAttrQueryRequest(reqByte); + //reqByte = req2.getTokenSaml(); + + try { + //output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml")); + FileOutputStream fos; + File outputDir = new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine"); + File saveFile = new File(outputDir, "AttrQueryRequestSdoc.xml"); + fos = new FileOutputStream(saveFile); + fos.write(reqByte); + fos.flush(); + fos.close(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(reqByte); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + LOG.info("STORKAttrQueryRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); + + request.setCitizenCountryCode("IS"); + LOG.info("STORKAttrQueryRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAttrQueryRequest(request).getTokenSaml())); + } + +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java new file mode 100644 index 000000000..a98d5b7c3 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAttrQueryResponseTest.java @@ -0,0 +1,1085 @@ +package eu.stork.peps.test.simple; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.junit.Ignore; +import org.junit.Test; +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSUtil; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAttrQueryRequest; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.commons.STORKAuthnRequest; +import eu.stork.peps.auth.commons.STORKAuthnResponse; +import eu.stork.peps.auth.commons.STORKStatusCode; +import eu.stork.peps.auth.commons.STORKSubStatusCode; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + +public class StorkAttrQueryResponseTest { + + /** The engine. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + + /** + * Gets the engine. + * + * @return the engine + */ + public static STORKSAMLEngine getEngine() { + return engine; + } + + /** + * Sets the engine. + * + * @param newEngine the new engine + */ + public static void setEngine(final STORKSAMLEngine newEngine) { + StorkAttrQueryResponseTest.engine = newEngine; + } + + /** The destination. */ + private static String destination; + + /** The service provider sector. */ + private static String spSector; + + /** The service provider institution. */ + private static String spInstitution; + + /** The service provider application. */ + private static String spApplication; + + /** The service provider country. */ + private static String spCountry; + + /** The service provider id. */ + private static String spId; + + /** The quality authentication assurance level. */ + private static final int QAAL = 3; + + /** The state. */ + private static String state = "IS"; + + /** The town. */ + private static String town = "Reykjavik"; + + /** The postal code. */ + private static String postalCode = "105"; + + /** The street name. */ + private static String streetName = "Gudrunartun"; + + /** The street number. */ + private static String streetNumber = "10"; + + /** The List of Personal Attributes. */ + private static IPersonalAttributeList pal; + + /** The assertion consumer URL. */ + private static String assertConsumerUrl; + + /** The attribute query request. */ + private static byte[] attrQueryRequest; + + /** The attribute query response. */ + private static byte[] attrQueryResponse; + + /** The attribute query request. */ + private static STORKAttrQueryRequest attrQueryenRequest; + + /** The attribute query response. */ + private static STORKAttrQueryResponse attrQeuryenResponse; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkAttrQueryResponseTest.class.getName()); + + /** + * Instantiates a new stork response test. + */ + public StorkAttrQueryResponseTest() { + super(); + } + + /** The IP address. */ + private static String ipAddress; + + /** The destination URL. */ + private static String destinationUrl; + + /** The is hashing. */ + private final boolean isHashing = Boolean.TRUE; + + /** The is not hashing. */ + private final boolean isNotHashing = Boolean.FALSE; + + /** The ERROR text. */ + private static final String ERROR_TXT = "generateAttrQueryResponse(...) should've thrown an STORKSAMLEngineException!"; + + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + + pal = new PersonalAttributeList(); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(false); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + pal.add(isAgeOver); + + PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + pal.add(dateOfBirth); + + PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + List eid = Arrays.asList("IS/IS/1234567890"); + eIDNumber.setValue(eid); + eIDNumber.setIsRequired(true); + pal.add(eIDNumber); + + final PersonalAttribute givenName = new PersonalAttribute(); + givenName.setName("givenName"); + givenName.setIsRequired(true); + pal.add(givenName); + + PersonalAttribute canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + pal.add(canRessAddress); + + PersonalAttribute newAttribute = new PersonalAttribute(); + newAttribute.setName("newAttribute2"); + newAttribute.setIsRequired(true); + pal.add(newAttribute); + + destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; + spSector = "EDU001"; + spInstitution = "OXF001"; + spApplication = "APP001"; + spCountry = "EN"; + + spId = "EDU001-APP001-APP001"; + + final STORKAttrQueryRequest request = new STORKAttrQueryRequest(); + request.setDestination(destination); + //request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("IS"); + + try { + attrQueryRequest = getEngine().generateSTORKAttrQueryRequest(request) + .getTokenSaml(); + + attrQueryenRequest = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); + + } catch (STORKSAMLEngineException e) { + fail("Error create STORKAuthnRequest"); + } + + ipAddress = "111.222.333.444"; + + destinationUrl = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + + pal = new PersonalAttributeList(); + + isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + ages = new ArrayList(); + + ages.add("16"); + ages.add("18"); + + isAgeOver.setValue(ages); + isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(isAgeOver); + + dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + final ArrayList date = new ArrayList(); + date.add("16/12/2008"); + dateOfBirth.setValue(date); + dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(dateOfBirth); + + eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + final ArrayList idNumber = new ArrayList(); + idNumber.add("123456789IS"); + eIDNumber.setValue(idNumber); + eIDNumber.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(eIDNumber); + + canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap address = new HashMap(); + + address.put("state", state); + address.put("town", town); + address.put("postalCode", postalCode); + address.put("streetName", streetName); + address.put("streetNumber", streetNumber); + + canRessAddress.setComplexValue(address); + pal.add(canRessAddress); + + newAttribute = new PersonalAttribute(); + newAttribute.setName("newAttribute2"); + newAttribute.setIsRequired(true); + newAttribute.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap values = new HashMap(); + + values.put("value1", "value1"); + values.put("value2", "value2"); + values.put("value3", "value3"); + values.put("value4", "value4"); + + newAttribute.setComplexValue(values); + pal.add(newAttribute); + + } + + /** + * Test generate attribute query request without errors. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAttrQueryResponse() throws STORKSAMLEngineException { + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(pal); + + final STORKAttrQueryResponse storkResponse = getEngine() + .generateSTORKAttrQueryResponse(attrQueryenRequest, response, ipAddress, + destinationUrl, isNotHashing); + + attrQueryResponse = storkResponse.getTokenSaml(); + + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(attrQueryResponse); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(attrQueryResponse)); + + + } + + /** + * Test validation id parameter mandatory. + */ + @Test + public final void testResponseMandatoryId() { + final String identifier = attrQueryenRequest.getSamlId(); + attrQueryenRequest.setSamlId(null); + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(pal); + + try { + getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, + ipAddress, destinationUrl, isHashing); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + attrQueryenRequest.setSamlId(identifier); + LOG.error("Error"); + } + } + + /** + * Test generate attribute query response in response to err1. + */ + @Test + public final void testResponseMandatoryIssuer() { + + final String issuer = attrQueryenRequest.getIssuer(); + attrQueryenRequest.setIssuer(null); + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(pal); + + try { + getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, + ipAddress, destinationUrl, isHashing); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + attrQueryenRequest.setIssuer(issuer); + LOG.error("Error"); + } + } + + + /** + * Test generate attribute query response assertion consumer null. + */ + /*@Test + public final void testResponseMandatoryAssertionConsumerServiceURL() { + final String asserConsumerUrl = attrQueryenRequest + .getAssertionConsumerServiceURL(); + attrQueryenRequest.setAssertionConsumerServiceURL(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + try { + getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, + ipAddress, isHashing); + fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + attrQueryenRequest.setAssertionConsumerServiceURL(asserConsumerUrl); + LOG.error("Error"); + } + } + + /** + * Test generate attribute query response IP address null. + */ + @Test + public final void testResponseValidationIP() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(pal); + + try { + getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, null, + destinationUrl, isHashing); + fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate attribute query response with personal attribute list null. + */ + @Test + public final void testResponseMandatoryPersonalAttributeList() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(null); + + + try { + getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, response, + ipAddress, destinationUrl, isHashing); + fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate attribute query response token null. + */ + @Test + public final void testResponseInvalidParametersToken() { + try { + getEngine().validateSTORKAttrQueryResponse(null, ipAddress); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate attribute query response IP null. + */ + @Test + public final void STORKAttrQueryResponse() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(pal); + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate attribute query response parameter name wrong. + */ + @Test + public final void testResponseInvalidParametersAttr() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("AttrWrong"); + wrongList.add(worngAttr); + + + response.setPersonalAttributeList(wrongList); + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate attribute query response set null value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrSimpleValue() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("isAgeOver"); + worngAttr.setValue(null); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate attribute query response set null value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrNoValue() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("isAgeOver"); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate attribute query response set null value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrNoName() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate attribute query response set null complex value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrComplexValue() { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("isAgeOver"); + worngAttr.setComplexValue(null); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponse(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + + + /** + * Test validate attribute query response IP distinct and disabled validation + * IP. + */ + @Test + public final void testResponseInvalidParametersIPDistinct() { + try { + // ipAddress origin "111.222.333.444" + // ipAddrValidation = false + // Subject Confirmation Bearer. + + getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, "127.0.0.1"); + } catch (STORKSAMLEngineException e) { + fail("validateAttributeQueryResponse(...) should've thrown an STORKSAMLEngineException!"); + LOG.error("Error"); + } + } + + /** + * Test response invalid parameters invalid token. + */ + @Test + public final void testResponseInvalidParametersTokenMsg() { + try { + // ipAddress origin "111.222.333.444" + // Subject Confirmation Bearer. + getEngine().validateSTORKAttrQueryResponse("errorMessage".getBytes(), + ipAddress); + fail("validateAuthenticationResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate attribute query response is fail. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + /*@Test + public final void testValidateAuthenticationResponseIsFail() + throws STORKSAMLEngineException { + attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, + ipAddress); + + assertFalse("Generate incorrect response: ", attrQeuryenResponse.isFail()); + } + + /** + * Test validate attribute query response destination. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthenticationResponseDestination() + throws STORKSAMLEngineException { + attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, + ipAddress); + + assertEquals("Destination incorrect: ", + attrQeuryenResponse.getInResponseTo(), attrQueryenRequest.getSamlId()); + } + + /** + * Test validate attribute query response values. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthenticationResponseValuesComplex() + throws STORKSAMLEngineException { + attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, + ipAddress); + + assertEquals("Country incorrect:", attrQeuryenResponse.getCountry(), "ES"); + + final Iterator iterator = attrQeuryenResponse + .getPersonalAttributeList().iterator(); + + while (iterator.hasNext()) { + final PersonalAttribute attribute = iterator.next(); + if (attribute.getName().equalsIgnoreCase( + "canonicalResidenceAddress")) { + assertEquals("State incorrect: ", state, attribute + .getComplexValue().get("state")); + assertEquals("Town incorrect: ", town, attribute + .getComplexValue().get("town")); + assertEquals("Postal code incorrect: ", postalCode, attribute + .getComplexValue().get("postalCode")); + assertEquals("Street name incorrect: ", streetName, attribute + .getComplexValue().get("streetName")); + assertEquals("Street number incorrect: ", streetNumber, + attribute.getComplexValue().get("streetNumber")); + } + } + } + + /** + * Test generate attribute query response fail in response to it's null. + * @throws STORKSAMLEngineException + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test //( expected=STORKSAMLEngineException.class) + public final void testGenerateAttrQueryResponseFailInResponseToNull() throws STORKSAMLEngineException { + final String identifier = attrQueryenRequest.getSamlId(); + attrQueryenRequest.setSamlId(null); + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage(""); + + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponseFail(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + attrQueryenRequest.setSamlId(identifier); + LOG.error("Error"); + //throw new STORKSAMLEngineException(e); + } + } + + /** + * Test generate attribute query response fail assertion consumer URL err1. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + /*@Test + public final void testGenerateAuthnResponseFailAssertionConsumerUrlNull() + throws STORKSAMLEngineException { + + final String assertConsumerUrl = attrQueryenRequest + .getAssertionConsumerServiceURL(); + attrQueryenRequest.setAssertionConsumerServiceURL(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage(""); + + try { + attrQueryResponse = getEngine().generateSTORKAuthnResponseFail(attrQueryenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + fail("generateAuthnResponseFail(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + attrQueryenRequest.setAssertionConsumerServiceURL(assertConsumerUrl); + LOG.error("Error"); + } + } + + /** + * Test generate attribute query response fail code error err1. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAttrQueryResponseFailCodeErrorNull() + throws STORKSAMLEngineException { + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setStatusCode(null); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage(""); + + try { + attrQueryResponse = getEngine().generateSTORKAttrQueryResponseFail(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + fail("generateAttrQueryResponseFail(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + + + /** + * Test generate attribute query request without errors. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryResponse() throws STORKSAMLEngineException { + + IPersonalAttributeList palist = new PersonalAttributeList(); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + palist.add(isAgeOver); + + PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + final ArrayList date = new ArrayList(); + date.add("16/12/2008"); + dateOfBirth.setValue(date); + dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + palist.add(dateOfBirth); + + + PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + + final ArrayList idNumber = new ArrayList(); + idNumber.add("123456789PÑ"); + + final HashMap complex = new HashMap(); + complex.put("one", "two"); + + //eIDNumber.setValue(null); + //eIDNumber.setValue(idNumber); + //eIDNumber.setComplexValue(complex); + + eIDNumber.setStatus(STORKStatusCode.STATUS_NOT_AVAILABLE.toString()); + palist.add(eIDNumber); + + PersonalAttribute canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap address = new HashMap(); + + address.put("state", state); + address.put("town", town); + address.put("postalCode", postalCode); + address.put("streetName", streetName); + address.put("streetNumber", streetNumber); + + canRessAddress.setComplexValue(address); + palist.add(canRessAddress); + + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + + response.setPersonalAttributeList(palist); + + final STORKAttrQueryResponse storkResponse = getEngine() + .generateSTORKAttrQueryResponse(attrQueryenRequest, response, ipAddress, + destinationUrl, isNotHashing); + + attrQueryResponse = storkResponse.getTokenSaml(); + LOG.info("Request id: " + attrQueryenRequest.getSamlId()); + + LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(attrQueryResponse)); + + + attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, + ipAddress); + + LOG.info("RESPONSE ID: " + attrQeuryenResponse.getSamlId()); + LOG.info("RESPONSE IN_RESPONSE_TO: " + attrQeuryenResponse.getInResponseTo()); + LOG.info("RESPONSE COUNTRY: " + attrQeuryenResponse.getCountry()); + + } + + + + + + /** + * Test validate attribute query response fail is fail. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAttrQueryResponseFailIsFail() + throws STORKSAMLEngineException { + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage("message"); + + attrQueryResponse = getEngine().generateSTORKAttrQueryResponseFail(attrQueryenRequest, + response, ipAddress, destinationUrl, isNotHashing).getTokenSaml(); + + LOG.error("ERROR_FAIL: " + PEPSUtil.encodeSAMLToken(attrQueryResponse)); + + attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, + ipAddress); + + LOG.info("COUNTRY: " + attrQeuryenResponse.getCountry()); + assertTrue("Generate incorrect response: ", attrQeuryenResponse.isFail()); + } + + /** + * Test generate/validate response with signedDoc + * + * @throws STORKSAMLEngineException + * the STORKSAML engine exception + */ + @Test + public final void testGenerateAttrQueryResponseWithSignedDoc() + throws STORKSAMLEngineException { + + String signedDocResponse = " urn:oasis:names:tc:dss:1.0:resultmajor:Success PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzOlJlZmVyZW5jZSBJZD0iUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjT2JqZWN0LTk4NzMzY2RlLThiY2MtNDhhMC05Yjc3LTBlOTk5N2JkZDA1OCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkNrMVZxTmQ0NVFJdnEzQVpkOFhZUUx2RWh0QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjxkczpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMyNTaWduZWRQcm9wZXJ0aWVzIiBVUkk9IiNTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5BNVk5MW40cXBMZ3l0VFc3ZnhqWENVZVJ2NTQ9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI1NpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItS2V5SW5mbyI+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPlZQWDRuS0Z5UzZyRitGNmNSUjBQck5aZHc2Zz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9IlNpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItU2lnbmF0dXJlVmFsdWUiPkxiS04vL0M3WGt5eFR0WVRpQ1VScjhuWnp4QW1zdGNNZDBDZ0VBQ3JLMWR5Z1JIcUdjSzR4dHMrV0NVOFB5RXFXclJJVFl6SXV3LzcNClY0Wno5VFQ2MHA0S1RNZXd1UUw2NHNrRVN4MllnMkVkaWtTTyt0S3hXa2hyYVVzbVZiR2JQbW1jbUR2OTd0SER3ODg3NDdlRnE1RjUNCnYrYVZTeUF6MDNpVUttdVNlSDg9PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbyBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1LZXlJbmZvIj48ZHM6S2V5VmFsdWU+PGRzOlJTQUtleVZhbHVlPjxkczpNb2R1bHVzPnd1Y21qOXRJV3J2d2JTVFVEZndLbCtKdERNTUVSMGNMZDZEa0JTcjc5MHQrckdOakVTcVlqUndFSWVCbktvUUhQeDVIb1JlRjg4L3QNCnFZOStDaEVYcExITHM5cDVhWDdTREp1YnBRTWZwMXRERlgzNHl3Z3hTUXZjZWVKUVdCWGppZXVJbWZDMjFzNGJPY2dKYlYxaGJpZ1MNCnpPS1RRS3IxVHpkR1IrdVJ5MDA9PC9kczpNb2R1bHVzPjxkczpFeHBvbmVudD5BUUFCPC9kczpFeHBvbmVudD48L2RzOlJTQUtleVZhbHVlPjwvZHM6S2V5VmFsdWU+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJSW1UQ0NCNEdnQXdJQkFnSURBWFVVTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUlCT3pFTE1Ba0dBMVVFQmhNQ1JWTXhPekE1QmdOVg0KQkFvVE1rRm5aVzVqYVdFZ1EyRjBZV3hoYm1FZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUNoT1NVWWdVUzB3T0RBeE1UYzJMVWtwTVRRdw0KTWdZRFZRUUhFeXRRWVhOellYUm5aU0JrWlNCc1lTQkRiMjVqWlhCamFXOGdNVEVnTURnd01EZ2dRbUZ5WTJWc2IyNWhNUzR3TEFZRA0KVlFRTEV5VlRaWEoyWldseklGQjFZbXhwWTNNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVWRFZpMHlNVFV3TXdZRFZRUUxFeXhXWldkbA0KZFNCb2RIUndjem92TDNkM2R5NWpZWFJqWlhKMExtNWxkQzkyWlhKRFNVTXRNaUFvWXlrd016RTFNRE1HQTFVRUN4TXNSVzUwYVhSaA0KZENCd2RXSnNhV05oSUdSbElHTmxjblJwWm1sallXTnBieUJrWlNCamFYVjBZV1JoYm5NeEd6QVpCZ05WQkFNVEVsQlNSVkJTVDBSVg0KUTBOSlR5QkpSRU5oZERBZUZ3MHhNREF5TVRFeE9ESXlNRFJhRncweE5EQXlNVEF4T0RJeU1EUmFNSUd3TVFzd0NRWURWUVFHRXdKRg0KVXpFMU1ETUdBMVVFQ3hNc1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5U1VSRFlYUWdLR01wTURNeA0KRmpBVUJnTlZCQVFURFVKRlVreEJUa2RCSUZOUFZFOHhGekFWQmdOVkJDb1REazFCVWtsQklFVk9SMUpCUTBsQk1SSXdFQVlEVlFRRg0KRXdreE1EQXdNRGswTkZNeEpUQWpCZ05WQkFNVEhFMUJVa2xCSUVWT1IxSkJRMGxCSUVKRlVreEJUa2RCSUZOUFZFOHdnWjh3RFFZSg0KS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNTG5Kby9iU0ZxNzhHMGsxQTM4Q3BmaWJRekRCRWRIQzNlZzVBVXErL2RMZnF4ag0KWXhFcW1JMGNCQ0hnWnlxRUJ6OGVSNkVYaGZQUDdhbVBmZ29SRjZTeHk3UGFlV2wrMGd5Ym02VURINmRiUXhWOStNc0lNVWtMM0huaQ0KVUZnVjQ0bnJpSm53dHRiT0d6bklDVzFkWVc0b0VzemlrMENxOVU4M1JrZnJrY3ROQWdNQkFBR2pnZ1N3TUlJRXJEQU1CZ05WSFJNQg0KQWY4RUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRm9EQ0J6QVlEVlIwUkJJSEVNSUhCZ1E5aWMyOTBiMEJuYldGcGJDNWpiMjJrZ1lVdw0KZ1lJeEN6QUpCZ05WQkFZVEFrVlRNU3N3S1FZRFZRUUtGQ0pCWjhPb2JtTnBZU0JEWVhSaGJHRnVZU0JrWlNCRFpYSjBhV1pwWTJGag0KYWNPek1RNHdEQVlEVlFRTEV3VkpSRU5CVkRFUE1BMEdBMVVFQlJNR01ERTNOVEUwTVNVd0l3WURWUVFERXh4TlFWSkpRU0JGVGtkUw0KUVVOSlFTQkNSVkpNUVU1SFFTQlRUMVJQb0JBR0Npc0dBUVFCOVhnQkFRR2dBZ3dBb0JRR0RsWUVBQUVEQmdFRUFmVjRBUUVDb0FJTQ0KQURBZkJnTlZIUklFR0RBV2dSUmxZMTlwWkdOaGRFQmpZWFJqWlhKMExtNWxkREFkQmdOVkhRNEVGZ1FVQUZYanVOc2tCMk1seXZVQg0KaDdwOFRKMHVKMHd3Z2dGSUJnTlZIU01FZ2dFL01JSUJPNEFVUkt2Y2tVaE4xNGg0Q24vZ2RPRG42NzIzS1Z5aGdnRVBwSUlCQ3pDQw0KQVFjeEN6QUpCZ05WQkFZVEFrVlRNVHN3T1FZRFZRUUtFekpCWjJWdVkybGhJRU5oZEdGc1lXNWhJR1JsSUVObGNuUnBabWxqWVdOcA0KYnlBb1RrbEdJRkV0TURnd01URTNOaTFKS1RFb01DWUdBMVVFQ3hNZlUyVnlkbVZwY3lCUWRXSnNhV056SUdSbElFTmxjblJwWm1sag0KWVdOcGJ6RThNRG9HQTFVRUN4TXpWbVZuWlhVZ2FIUjBjSE02THk5M2QzY3VZMkYwWTJWeWRDNXVaWFF2ZG1WeWNISmxjSEp2WkhWag0KWTJsdklDaGpLVEF6TVRVd013WURWUVFMRXl4S1pYSmhjbkYxYVdFZ1JXNTBhWFJoZEhNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVOaA0KZEdGc1lXNWxjekVjTUJvR0ExVUVBeE1UVUZKRlVGSlBSRlZEUTBsUElFVkRMVUZEUTRJUWR3S1R0TTFFRVU5RkVQWFVZSGdnaERBZA0KQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdRd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdXZ01EUUdDQ3NHQVFVRg0KQndFQkJDZ3dKakFrQmdnckJnRUZCUWN3QVlZWWFIUjBjSE02THk5dlkzTndMbU5oZEdObGNuUXVibVYwTUJnR0NDc0dBUVVGQndFRA0KQkF3d0NqQUlCZ1lFQUk1R0FRRXdnWVlHQTFVZEh3Ui9NSDB3UEtBNm9EaUdObWgwZEhBNkx5OWxjSE5qWkM1allYUmpaWEowTG01bA0KZEM5amNtd3ZjSEpsY0hKdlpIVmpZMmx2WDJWakxXbGtZMkYwTG1OeWJEQTlvRHVnT1lZM2FIUjBjRG92TDJWd2MyTmtNaTVqWVhSag0KWlhKMExtNWxkQzlqY213dmNISmxjSEp2WkhWalkybHZYMlZqTFdsa1kyRjBMbU55YkRDQjlnWURWUjBnQklIdU1JSHJNSUhvQmd3cg0KQmdFRUFmVjRBUU1CVmdFd2dkY3dMQVlJS3dZQkJRVUhBZ0VXSUdoMGRIQnpPaTh2ZDNkM0xtTmhkR05sY25RdWJtVjBMM1psY2tsRQ0KUTJGME1JR21CZ2dyQmdFRkJRY0NBakNCbVJxQmxrRnhkV1Z6ZENEdnY3MXpJSFZ1SUdObGNuUnBabWxqWVhRZ2NHVnljMjl1WVd3Zw0KU1VSRFFWUXNJSEpsWTI5dVpXZDFkQ0JrSjJsa1pXNTBhV1pwWTJGajc3KzlMQ0J6YVdkdVlYUjFjbUVnYVNCNGFXWnlZWFFnWkdVZw0KWTJ4aGMzTmxJRElnYVc1a2FYWnBaSFZoYkM0Z1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5UkVOaA0KZERBdEJnTlZIUWtFSmpBa01CQUdDQ3NHQVFVRkJ3a0VNUVFUQWtWVE1CQUdDQ3NHQVFVRkJ3a0ZNUVFUQWtWVE1BMEdDU3FHU0liMw0KRFFFQkJRVUFBNElCQVFDcTc3ODBSR1FNTEIxZ2tkTk1mTFhuZ3FNb1JIR0taYnZ6a3JxSUFtVDhXQWQxRThyQXBoUjkveExKVXRwNQ0KbGJnMmZScjVibDJqOE9WREJLMlltRzQxaDhBRG40U1RJL0FwZU5JTlNmalpzNk5Sc25XekZ5ZlhYbVBDSFlGQi9YV3p5aW1DRXhndg0KdnR1SCszUUF3Y3dobjUwUExFdWh3NUM1dmxYN0x5NUs2ckxMTUZOVVVNYldWeTFoWmVsSy9DQlRjQWpJTzM4TlkrdllSQU1LU2Y0TQ0KL2daUXo0cUJlRlZKYTUyUjdOY0FxQ2ZyZkxmYVhwYkRTZzk4eG9CZU5zMmluR3p4OFVTZ0VyTFpqS0pzZG4vS2pURDlnUy9zVGRRNg0KUTdpZHFsZDJMRlZsTzIvYjk0Wk5aQmNTLzc4RU9EWGdkV2ZreVBDN1J3OHJlOW5JMy9qVDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjxkczpPYmplY3QgRW5jb2Rpbmc9ImJhc2U2NCIgSWQ9Ik9iamVjdC05ODczM2NkZS04YmNjLTQ4YTAtOWI3Ny0wZTk5OTdiZGQwNTgiIE1pbWVUeXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iPlNHVnNiRzhnVjI5eWJHUT08L2RzOk9iamVjdD48ZHM6T2JqZWN0Pjx4YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcyB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1RdWFsaWZ5aW5nUHJvcGVydGllcyIgVGFyZ2V0PSIjU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjx4YWRlczpTaWduZWRQcm9wZXJ0aWVzIElkPSJTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjx4YWRlczpTaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzPjx4YWRlczpTaWduaW5nVGltZT4yMDExLTAzLTIxVDExOjQ0OjQyKzAxOjAwPC94YWRlczpTaWduaW5nVGltZT48eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjx4YWRlczpDZXJ0Pjx4YWRlczpDZXJ0RGlnZXN0PjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT4zbTZ3OTlUb3lTZDlKcEJsMWdCazhEei9iYlU9PC9kczpEaWdlc3RWYWx1ZT48L3hhZGVzOkNlcnREaWdlc3Q+PHhhZGVzOklzc3VlclNlcmlhbD48ZHM6WDUwOUlzc3Vlck5hbWU+Q049UFJFUFJPRFVDQ0lPIElEQ2F0LCBPVT1FbnRpdGF0IHB1YmxpY2EgZGUgY2VydGlmaWNhY2lvIGRlIGNpdXRhZGFucywgT1U9VmVnZXUgaHR0cHM6Ly93d3cuY2F0Y2VydC5uZXQvdmVyQ0lDLTIgKGMpMDMsIE9VPVNlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8gRUNWLTIsIEw9UGFzc2F0Z2UgZGUgbGEgQ29uY2VwY2lvIDExIDA4MDA4IEJhcmNlbG9uYSwgTz1BZ2VuY2lhIENhdGFsYW5hIGRlIENlcnRpZmljYWNpbyAoTklGIFEtMDgwMTE3Ni1JKSwgQz1FUzwvZHM6WDUwOUlzc3Vlck5hbWU+PGRzOlg1MDlTZXJpYWxOdW1iZXI+OTU1MDg8L2RzOlg1MDlTZXJpYWxOdW1iZXI+PC94YWRlczpJc3N1ZXJTZXJpYWw+PC94YWRlczpDZXJ0PjwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjwveGFkZXM6U2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcz48eGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PHhhZGVzOkRhdGFPYmplY3RGb3JtYXQgT2JqZWN0UmVmZXJlbmNlPSIjUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyI+PHhhZGVzOk1pbWVUeXBlPmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTwveGFkZXM6TWltZVR5cGU+PHhhZGVzOkVuY29kaW5nPmJhc2U2NDwveGFkZXM6RW5jb2Rpbmc+PC94YWRlczpEYXRhT2JqZWN0Rm9ybWF0PjwveGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPjwveGFkZXM6UXVhbGlmeWluZ1Byb3BlcnRpZXM+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+ "; + + IPersonalAttributeList palist = new PersonalAttributeList(); + + PersonalAttribute signedDoc = new PersonalAttribute(); + signedDoc.setName("signedDoc"); + signedDoc.setIsRequired(false); + ArrayList signed = new ArrayList(); + signed.add(signedDocResponse); + signedDoc.setValue(signed); + palist.add(signedDoc); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(false); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + palist.add(isAgeOver); + + attrQueryenRequest.setPersonalAttributeList(palist); + + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + + response.setPersonalAttributeList(palist); + + final STORKAttrQueryResponse storkResponse = getEngine() + .generateSTORKAttrQueryResponse(attrQueryenRequest, response, ipAddress, + destinationUrl, isNotHashing); + + attrQueryResponse = storkResponse.getTokenSaml(); + attrQeuryenResponse = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, + ipAddress); + + assertTrue("SignedDoc response should be the same: ", attrQeuryenResponse + .getPersonalAttributeList().get("signedDoc").getValue().get(0) + .equals(signedDocResponse)); + + } + + @Test + public final void testEncodeDecode() { + STORKAttrQueryRequest attrRequest = new STORKAttrQueryRequest(); + STORKAttrQueryRequest request; + IPersonalAttributeList list = null; + boolean outcome = false; + + try { + //STEP 1: Create the STORKAttrQueryRequest and get the SAML bytes + attrRequest.setSpSector("NOT AVAILABLE"); + attrRequest.setSpInstitution("NOT AVAILABLE"); + attrRequest.setSpApplication("NOT AVAILABLE"); + attrRequest.setSpCountry("NOT AVAILABLE"); + + attrRequest.setIssuer("123"); + attrRequest.setDestination("456"); + attrRequest.setAssertionConsumerServiceURL("789"); + attrRequest.setQaa(2); + attrRequest.setPersonalAttributeList(pal); + + System.out.println("Original PAL:"); + System.out.println(pal.toString()); + + attrRequest = engine.generateSTORKAttrQueryRequest(attrRequest); + + byte[] saml = attrRequest.getTokenSaml(); + + //STEP 2: RE-Create the STORKAttrQueryRequest from the SAML bytes + request = engine.validateSTORKAttrQueryRequest(saml); + + System.out.println("STORKAttrQueryRequest Issuer: " + request.getIssuer()); + System.out.println("STORKAttrQueryRequest Destination: " + request.getDestination()); + System.out.println("STORKAttrQueryRequest ServiceURL: " + request.getAssertionConsumerServiceURL()); + System.out.println("STORKAttrQueryRequest Attributes: " + request.getPersonalAttributeList().toString()); + System.out.println("STORKAttrQueryRequest QAA: " + request.getQaa()); + //------------------------------ + list = request.getPersonalAttributeList(); + + List values = new ArrayList(); + values.add("test1"); + values.add("test2"); + values.add("test3"); + list.get("newAttribute2").setValue(values); + + System.out.println("Values added in newAttribute2 PAL:"); + System.out.println(list.toString()); + + ////////////////////////////////////////////////////////////////////////// + final STORKAttrQueryResponse response = new STORKAttrQueryResponse(); + response.setPersonalAttributeList(list); + + final STORKAttrQueryResponse storkResponse = + engine.generateSTORKAttrQueryResponse(request, response, "127.0.0.1", + request.getAssertionConsumerServiceURL(), false); + + byte[] samlBytes = storkResponse.getTokenSaml(); + + //STEP 3: RE-Create the STORKAttrQueryResponse from the SAML bytes + STORKAttrQueryResponse attrResponse = null; + attrResponse = + engine.validateSTORKAttrQueryResponse(samlBytes, "127.0.0.1"); + + System.out.println("Response decoded PAL:"); + System.out.println(attrResponse.getPersonalAttributeList().toString()); + + values = attrResponse.getPersonalAttributeList().get("newAttribute2").getValue(); + if ( values.contains("test1") && values.contains("test2") && values.contains("test3") ) + outcome = true; + } catch (final STORKSAMLEngineException e) { + LOG.error("Errror genereating SAML Token for Authentication Request", e); + } + + assertTrue(outcome); + } + + @Test + public final void testGenerateAttrRequestWithMultipleAssertions() + throws STORKSAMLEngineException { + STORKAttrQueryRequest req = null; + STORKAttrQueryResponse res0 = null; + STORKAttrQueryResponse res1 = null; + STORKAttrQueryResponse res2 = null; + STORKAttrQueryResponse res = null; + STORKAttrQueryResponse restotal = null; + + try { + req = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); + + attrQueryenRequest = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); + + } catch (STORKSAMLEngineException e) { + fail("Error validating STORKAuthnRequest"); + } + + IPersonalAttributeList pList = req.getPersonalAttributeList(); + for (int i =0; i < pList.size(); i++) + { + PersonalAttribute attr = pList.get("dateOfBirth"); + attr.setValue(Arrays.asList("19820919")); + pList.remove("dateOfBirth"); + pList.add(attr); + PersonalAttribute attr1 = pList.get("givenName"); + attr1.setValue(Arrays.asList("Sveinborn Oskarsson")); + pList.remove("givenName"); + pList.add(attr1); + PersonalAttribute attr2 = pList.get("isAgeOver"); + attr2.setValue(Arrays.asList("true")); + pList.remove("isAgeOver"); + pList.add(attr2); + } + + res = new STORKAttrQueryResponse(); + res.setPersonalAttributeList(pList); + + STORKAttrQueryResponse storkResponse = getEngine() + .generateSTORKAttrQueryResponse(req, res, ipAddress, + destinationUrl, isNotHashing); + + res0 = getEngine().validateSTORKAttrQueryResponse(storkResponse.getTokenSaml(), ipAddress); + + storkResponse = getEngine() + .generateSTORKAttrQueryResponse(req, res, ipAddress, + destinationUrl, isNotHashing); + res1 = getEngine().validateSTORKAttrQueryResponse(storkResponse.getTokenSaml(), ipAddress); + + storkResponse = getEngine() + .generateSTORKAttrQueryResponse(req, res, ipAddress, + destinationUrl, isNotHashing); + res2 = getEngine().validateSTORKAttrQueryResponse(storkResponse.getTokenSaml(), ipAddress); + + List responses = new ArrayList(); + responses.add(res0); + responses.add(res1); + responses.add(res2); + + STORKAttrQueryResponse resfinal = new STORKAttrQueryResponse(); + storkResponse = getEngine().generateSTORKAttrQueryResponseWithAssertions(req, resfinal, responses, + ipAddress, destinationUrl, isNotHashing); + + attrQueryResponse = storkResponse.getTokenSaml(); + FileOutputStream output = null; + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryMultiAssertResponse.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(attrQueryResponse); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + res = null; + res = getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress); + System.out.println(res.getTotalPersonalAttributeList().toString()); + assertNotNull(res); + } +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java new file mode 100644 index 000000000..02a8a6fab --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkAuthRequestTest.java @@ -0,0 +1,968 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.test.simple; + +import static org.junit.Assert.*; + +import java.util.ArrayList; + +import org.junit.Ignore; +import org.junit.Test; + +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAuthnRequest; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + +/** + * The Class StorkAuthRequestTest defines a class to . + */ +public class StorkAuthRequestTest { + + /** The engines. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); + private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); + + + /** + * Instantiates a new stork authentication request test. + */ + public StorkAuthRequestTest() { + pal = new PersonalAttributeList(); + + final PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + final ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + pal.add(isAgeOver); + + final PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + pal.add(dateOfBirth); + + final PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + pal.add(eIDNumber); + + destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; + + spName = "University of Oxford"; + spSector = "EDU001"; + spInstitution = "OXF001"; + spApplication = "APP001"; + spCountry = "EN"; + + spId = "EDU001-OXF001-APP001"; + + } + + /** The destination. */ + private String destination; + + /** The service provider name. */ + private String spName; + + /** The service provider sector. */ + private String spSector; + + /** The service provider institution. */ + private String spInstitution; + + /** The service provider application. */ + private String spApplication; + + /** The service provider country. */ + private String spCountry; + + /** The service provider id. */ + private String spId; + + /** The quality authentication assurance level. */ + private static final int QAAL = 3; + + /** The List of Personal Attributes. */ + private IPersonalAttributeList pal; + + /** The assertion consumer URL. */ + private String assertConsumerUrl; + + /** The authentication request. */ + private static byte[] authRequest; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkAuthRequestTest.class.getName()); + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + } + + /** + * Test generate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnRequest() throws STORKSAMLEngineException { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + //engine.generateSTORKAuthnRequest(request); + + LOG.info("STORKAuthnRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAuthnRequest(request).getTokenSaml())); + request.setCitizenCountryCode("ES"); + LOG.info("STORKAuthnRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKAuthnRequest(request).getTokenSaml())); + } + + + /** + * Test generate authentication request error personal attribute name error. + */ + @Test + public final void testGenerateAuthnRequestPALsErr1() { + + final IPersonalAttributeList palWrong = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("attrNotValid"); + worngAttr.setIsRequired(true); + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(palWrong); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + + /** + * Test generate authentication request error personal attribute value error. + */ + @Test + public final void testGenerateAuthnRequestPALsErr2() { + + final IPersonalAttributeList palWrong = new PersonalAttributeList(); + + final PersonalAttribute attrNotValid = new PersonalAttribute(); + attrNotValid.setName("attrNotValid"); + attrNotValid.setIsRequired(true); + palWrong.add(attrNotValid); + + + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(palWrong); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request error provider name null. + */ + @Test + public final void testGenerateAuthnRequestSPNAmeErr1() { + + + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(null); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try + { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } + catch (STORKSAMLEngineException e) + { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request authentication assurance level + * negative value. + */ + @Test + public final void testGenerateAuthnRequestQaalErr1() { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(-1); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + + try { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request service provider sector null. + */ + @Test + public final void testGenerateAuthnRequestSectorErr() { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(null); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + + } + } + + /** + * Test generate authentication request service provider institution null. + */ + @Test + public final void testGenerateAuthnRequestInstitutionrErr() { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(null); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } + } + + /** + * Test generate authentication request service provider application null. + */ + @Test + public final void testGenerateAuthnRequestApplicationErr() { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(null); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } + } + + /** + * Test generate authentication request service provider country null. + */ + @Test + public final void testGenerateAuthnRequestCountryErr() { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(null); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request error with quality authentication + * assurance level wrong. + */ + @Test + public final void testGenerateAuthnRequestQaalErr2() { + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(0); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request personal attribute list null value. + */ + @Test + public final void testGenerateAuthnRequestPALErr1() { + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(null); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication request error with assertion consumer URL + * null. + */ + @Test + public final void testGenerateAuthnRequestAssertionConsumerErr1() { + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(null); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + engine.generateSTORKAuthnRequest(request); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request null parameter. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequestNullParam() + throws STORKSAMLEngineException { + try { + engine.validateSTORKAuthnRequest(null); + fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request error bytes encode. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequestErrorEncode() + throws STORKSAMLEngineException { + try { + engine.validateSTORKAuthnRequest("messageError".getBytes()); + fail("validateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequest() throws STORKSAMLEngineException { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + authRequest = engine.generateSTORKAuthnRequest(request).getTokenSaml(); + + final STORKAuthnRequest validatedRequest = engine.validateSTORKAuthnRequest(authRequest); + + assertEquals("CrossBorderShare incorrect: ", validatedRequest.isEIDCrossBorderShare(), false); + assertEquals("CrossSectorShare incorrect: ", validatedRequest.isEIDCrossSectorShare(), false); + assertEquals("SectorShare incorrect: ", validatedRequest.isEIDSectorShare(), false); + + } + + /** + * Test validate data authenticate request. Verified parameters after + * validation. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateDataAuthnRequest() throws STORKSAMLEngineException { + + final STORKAuthnRequest request = engine.validateSTORKAuthnRequest(authRequest); + + assertEquals("Sestination incorrect: ", request.getDestination(), destination); + + assertEquals("CrossBorderShare incorrect: ", request.isEIDCrossBorderShare(), false); + assertEquals("CrossSectorShare incorrect: ", request.isEIDCrossSectorShare(), false); + assertEquals("SectorShare incorrect: ", request.isEIDSectorShare(), false); + + assertEquals("Service provider incorrect: ", request.getProviderName(), spName); + assertEquals("QAAL incorrect: ", request.getQaa(), QAAL); + assertEquals("SPSector incorrect: ", request.getSpSector(), spSector); + assertEquals("SPInstitution incorrect: ", request.getSpInstitution(), null); + assertEquals("SPApplication incorrect: ", request.getSpApplication(), spApplication); + assertEquals("Asserition consumer URL incorrect: ", request.getAssertionConsumerServiceURL(), assertConsumerUrl); + + assertEquals("SP Country incorrect: ", request.getSpCountry(), spCountry); + assertEquals("SP Id incorrect: ", request.getSPID(), spId); + assertEquals("CitizenCountryCode incorrect: ", request.getCitizenCountryCode(), "ES"); + + } + + /** + * Test validate file authentication request. Validate from XML file. + * + * @throws Exception the exception + */ + @Test + public final void testValidateFileAuthnRequest() throws Exception { + + final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml"); + + try { + engine.validateSTORKAuthnRequest(bytes); + fail("testValidateFileAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error(e.getMessage()); + } + } + + /** + * Test validate file authentication request tag delete. + * + * @throws Exception the exception + */ + @Test + public final void testValidateFileAuthnRequestTagDelete() throws Exception { + + final byte[] bytes = SSETestUtils.readStorkSamlFromFile("/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml"); + + try { + engine.validateSTORKAuthnRequest(bytes); + fail("validateSTORKAuthnRequest(...) should have thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error(e.getMessage()); + + } + } + + /** + * Test validate authentication request not trusted token. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequestNotTrustedErr1() + throws STORKSAMLEngineException { + + try { + final STORKSAMLEngine engineNotTrusted = STORKSAMLEngine + .getInstance("CONF2"); + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + + final byte[] authReqNotTrust = engineNotTrusted + .generateSTORKAuthnRequest(request).getTokenSaml(); + + engine.validateSTORKAuthnRequest(authReqNotTrust); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("validateSTORKAuthnRequestNotTrusted(...) should not have thrown an STORKSAMLEngineException!"); + } + } + + /** + * Test validate authentication request trusted. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequestTrusted() + throws STORKSAMLEngineException { + + final STORKSAMLEngine engineTrusted = STORKSAMLEngine + .getInstance("CONF3"); + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + + final byte[] authReqNotTrust = engineTrusted.generateSTORKAuthnRequest( + request).getTokenSaml(); + + // engine ("CONF1") no have trust certificate from "CONF2" + engine.validateSTORKAuthnRequest(authReqNotTrust); + + } + + + + + /** + * Test generate authentication request service provider application null. + */ + @Test + public final void testGenerateAuthnRequestNADA() { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(null); + request.setSpInstitution(null); + request.setSpApplication(null); + request.setSpCountry(null); + + try { + + engine.validateSTORKAuthnRequest(authRequest); + + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + fail("generateSTORKAuthnRequest(...) should've thrown an STORKSAMLEngineException!"); + } + } + + /** + * Test validate authentication request with unknown elements. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequestWithUnknownElements() throws STORKSAMLEngineException { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + IPersonalAttributeList pAttList = new PersonalAttributeList(); + + final PersonalAttribute unknown = new PersonalAttribute(); + unknown.setName("unknown"); + unknown.setIsRequired(true); + pAttList.add(unknown); + + final PersonalAttribute eIdentifier = new PersonalAttribute(); + eIdentifier.setName("eIdentifier"); + eIdentifier.setIsRequired(true); + pAttList.add(eIdentifier); + + request.setPersonalAttributeList(pAttList); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + STORKAuthnRequest req = new STORKAuthnRequest(); + + req = engine3.generateSTORKAuthnRequest(request); + + req = engine.validateSTORKAuthnRequest(req.getTokenSaml()); + + assertNull("The value shouldn't exist", req.getPersonalAttributeList().get("unknown")); + assertNotNull("The value should exist", req.getPersonalAttributeList().get("eIdentifier")); + + } + + /** + * Test generate Request with required elements by default + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnRequestWithIsRequiredElementsByDefault() throws STORKSAMLEngineException { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + IPersonalAttributeList pAttList = new PersonalAttributeList(); + + final PersonalAttribute eIdentifier = new PersonalAttribute(); + eIdentifier.setName("eIdentifier"); + eIdentifier.setIsRequired(true); + pAttList.add(eIdentifier); + + request.setPersonalAttributeList(pAttList); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + STORKAuthnRequest req = new STORKAuthnRequest(); + STORKAuthnRequest reqTrue = new STORKAuthnRequest(); + STORKAuthnRequest reqFalse = new STORKAuthnRequest(); + + reqTrue = engine.generateSTORKAuthnRequest(request); + reqFalse = engine2.generateSTORKAuthnRequest(request); + req = engine3.generateSTORKAuthnRequest(request); + + + String token = new String(req.getTokenSaml()); + String reqTrueToken = new String(reqTrue.getTokenSaml()); + String reqFalseToken = new String(reqFalse.getTokenSaml()); + + assertTrue("The token must contain the chain 'isRequired'", token.contains("isRequired")); + assertTrue("The token must contain the chain 'isRequired'", reqTrueToken.contains("isRequired")); + assertFalse("The token must contain the chain 'isRequired'", reqFalseToken.contains("isRequired")); + + } + + /** + * Test validating request and getting alias used to save + * the saml trusted certificate into trustore + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnRequestGettingItsAlias() throws STORKSAMLEngineException { + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + IPersonalAttributeList pAttList = new PersonalAttributeList(); + + final PersonalAttribute eIdentifier = new PersonalAttribute(); + eIdentifier.setName("eIdentifier"); + eIdentifier.setIsRequired(true); + pAttList.add(eIdentifier); + + request.setPersonalAttributeList(pAttList); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + STORKAuthnRequest req = new STORKAuthnRequest(); + + req = engine3.generateSTORKAuthnRequest(request); + req = engine.validateSTORKAuthnRequest(req.getTokenSaml()); + assertTrue("The alias should match this value", req.getAlias().equals("local-demo-cert")); + + req = engine2.generateSTORKAuthnRequest(request); + req = engine2.validateSTORKAuthnRequest(req.getTokenSaml()); + assertTrue("The alias should match this value", req.getAlias().equals("local-demo-cert")); + + + + } + + /** + * Test generating/validating request with signedDoc + * + * @throws STORKSAMLEngineException + * the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnRequestWithSignedDoc() + throws STORKSAMLEngineException { + + String signedDocRequest = "VGVzdCB0ZXh0"; + + final STORKAuthnRequest request = new STORKAuthnRequest(); + + PersonalAttributeList paler = new PersonalAttributeList(); + + final PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + paler.add(eIDNumber); + + final PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + final ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + paler.add(isAgeOver); + + final PersonalAttribute signedDoc = new PersonalAttribute(); + signedDoc.setName("signedDoc"); + final ArrayList signedDocs = new ArrayList(); + signedDocs.add(signedDocRequest); + signedDoc.setValue(signedDocs); + signedDoc.setIsRequired(false); + paler.add(signedDoc); + + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(paler); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // new parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + STORKAuthnRequest req = new STORKAuthnRequest(); + + req = engine.generateSTORKAuthnRequest(request); + req = engine.validateSTORKAuthnRequest(req.getTokenSaml()); + + assertTrue("SignedDoc request should be the same: ", req + .getPersonalAttributeList().get("signedDoc").getValue().get(0) + .equals(signedDocRequest)); + + + } + +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java new file mode 100644 index 000000000..46904788f --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutRequestTest.java @@ -0,0 +1,89 @@ +package eu.stork.peps.test.simple; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import org.junit.Test; +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.STORKLogoutRequest; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + + +public class StorkLogoutRequestTest { + + /** The engines. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); + private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); + private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); + + public StorkLogoutRequestTest() { + destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + spUserId = "IS/IS/1234567890"; + } + + /** The destination. */ + private String destination; + + /** The user id. */ + private String spUserId; + + /** The logout request. */ + private static byte[] logoutRequest; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkLogoutRequestTest.class.getName()); + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + } + + /** + * Test generate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateLogoutRequest() throws STORKSAMLEngineException { + + final STORKLogoutRequest request = new STORKLogoutRequest(); + + request.setDestination(destination); + + request.setSpProvidedId(spUserId); + + STORKLogoutRequest req1 = engine0.generateSTORKLogoutRequest(request); + byte[] reqByte = req1.getTokenSaml(); + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/LogoutRequest.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(reqByte); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + LOG.info("STORKAttrQueryRequest 1: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKLogoutRequest(request).getTokenSaml())); + + LOG.info("STORKAttrQueryRequest 2: " + SSETestUtils.encodeSAMLToken(engine.generateSTORKLogoutRequest(request).getTokenSaml())); + } + +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java new file mode 100644 index 000000000..2d05e04aa --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkLogoutResponseTest.java @@ -0,0 +1,142 @@ +package eu.stork.peps.test.simple; + +import static org.junit.Assert.*; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; + +import junit.framework.Assert; + +import org.junit.Test; +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.STORKLogoutRequest; +import eu.stork.peps.auth.commons.STORKLogoutResponse; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + + +public class StorkLogoutResponseTest { + + /** The engines. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); + private static STORKSAMLEngine engine2 = STORKSAMLEngine.getInstance("CONF2"); + private static STORKSAMLEngine engine3 = STORKSAMLEngine.getInstance("CONF3"); + + public StorkLogoutResponseTest() { + destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + spUserId = "IS/IS/1234567890"; + } + + /** The destination. */ + private String destination; + + /** The user id. */ + private String spUserId; + + /** The logout request. */ + private static byte[] logoutRequest; + + /** The logout response. */ + private static byte[] logoutResponse; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkLogoutResponseTest.class.getName()); + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + } + + /** + * Test generate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateLogoutRequest() throws STORKSAMLEngineException { + + final STORKLogoutRequest request = new STORKLogoutRequest(); + + final STORKLogoutResponse response = new STORKLogoutResponse(); + + request.setDestination(destination); + response.setDestination(destination); + + request.setSpProvidedId(spUserId); + + STORKLogoutRequest req1 = engine0.generateSTORKLogoutRequest(request); + + STORKLogoutResponse res = engine0.generateSTORKLogoutResponse(req1, response); + + byte[] reqByte = res.getTokenSaml(); + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/LogoutResponse.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(reqByte); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + + assertNotNull(reqByte); + } + + /** + * Test generate authentication request. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateLogoutRequestFail() throws STORKSAMLEngineException { + + final STORKLogoutRequest request = new STORKLogoutRequest(); + + final STORKLogoutResponse response = new STORKLogoutResponse(); + + request.setDestination(destination); + response.setDestination(destination); + response.setStatusMessage("User not found."); + response.setStatusCode("1234"); + request.setSpProvidedId(spUserId); + + STORKLogoutRequest req1 = engine0.generateSTORKLogoutRequest(request); + + STORKLogoutResponse res = engine0.generateSTORKLogoutResponseFail(req1, response); + + byte[] reqByte = res.getTokenSaml(); + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/LogoutResponseFail.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(reqByte); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + assertNotNull(reqByte); + } + +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java new file mode 100644 index 000000000..62e9cfb18 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkNewResponseTest.java @@ -0,0 +1,533 @@ +package eu.stork.peps.test.simple; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.fail; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import org.junit.Test; +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAttrQueryRequest; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.commons.STORKAuthnRequest; +import eu.stork.peps.auth.commons.STORKAuthnResponse; +import eu.stork.peps.auth.commons.STORKStatusCode; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + + +public class StorkNewResponseTest { + /** The engine. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + private static STORKSAMLEngine engine0 = STORKSAMLEngine.getInstance("CONF0"); + + /** + * Gets the engine. + * + * @return the engine + */ + public static STORKSAMLEngine getEngine() { + return engine; + } + + public static STORKSAMLEngine getEngine2() { + return engine0; + } + + /** + * Sets the engine. + * + * @param newEngine the new engine + */ + public static void setEngine(final STORKSAMLEngine newEngine) { + StorkNewResponseTest.engine = newEngine; + } + + /** The destination. */ + private static String destination; + + /** The service provider name. */ + private static String spName; + + /** The service provider sector. */ + private static String spSector; + + /** The service provider institution. */ + private static String spInstitution; + + /** The service provider application. */ + private static String spApplication; + + /** The service provider country. */ + private static String spCountry; + + /** The service provider id. */ + private static String spId; + + /** The quality authentication assurance level. */ + private static final int QAAL = 3; + + /** The state. */ + private static String state = "ES"; + + /** The town. */ + private static String town = "Madrid"; + + /** The municipality code. */ + private static String municipalityCode = "MA001"; + + /** The postal code. */ + private static String postalCode = "28038"; + + /** The street name. */ + private static String streetName = "Marchamalo"; + + /** The street number. */ + private static String streetNumber = "3"; + + /** The apartament number. */ + private static String apartamentNumber = "5º E"; + + /** The List of Personal Attributes. */ + private static IPersonalAttributeList pal; + + /** The List of Personal Attributes. */ + private static IPersonalAttributeList pal2; + + /** The assertion consumer URL. */ + private static String assertConsumerUrl; + + /** The authentication request. */ + private static byte[] authRequest; + + /** The authentication response. */ + private static byte[] authResponse; + + /** The authentication request. */ + private static STORKAuthnRequest authenRequest; + + /** The authentication response. */ + private static STORKAuthnResponse authnResponse; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkResponseTest.class.getName()); + + /** + * Instantiates a new stork response test. + */ + public StorkNewResponseTest() { + super(); + } + + /** The IP address. */ + private static String ipAddress; + + /** The is hashing. */ + private final boolean isHashing = Boolean.TRUE; + + /** The is not hashing. */ + private final boolean isNotHashing = Boolean.FALSE; + + /** The ERROR text. */ + private static final String ERROR_TXT = "generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"; + + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + /** The attribute query request. */ + private static STORKAttrQueryRequest attrQueryenRequest; + + /** The attribute query response. */ + private static STORKAttrQueryResponse attrQeuryenResponse; + + /** The attribute query request. */ + private static byte[] attrQueryRequest; + + /** The attribute query response. */ + private static byte[] attrQueryResponse; + + + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + + pal = new PersonalAttributeList(); + pal2 = new PersonalAttributeList(); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(false); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + pal.add(isAgeOver); + + PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + pal.add(dateOfBirth); + + PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + pal.add(eIDNumber); + + final PersonalAttribute givenName = new PersonalAttribute(); + givenName.setName("givenName"); + givenName.setIsRequired(true); + pal.add(givenName); + + PersonalAttribute canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + pal.add(canRessAddress); + + PersonalAttribute newAttribute = new PersonalAttribute(); + newAttribute.setName("newAttribute2"); + newAttribute.setIsRequired(true); + pal.add(newAttribute); + + PersonalAttribute hasDegree = new PersonalAttribute(); + hasDegree.setName("hasDegree"); + List vals = new ArrayList(); + vals.add("Engineering"); + vals.add("Computer Science"); + hasDegree.setValue(vals); + pal2.add(hasDegree); + + PersonalAttribute mandate = new PersonalAttribute(); + mandate.setName("mandateContent"); + List manvalues = new ArrayList(); + manvalues.add("Powers"); + mandate.setValue(manvalues); + pal2.add(mandate); + + destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; + spName = "University Oxford"; + + spName = "University of Oxford"; + spSector = "EDU001"; + spInstitution = "OXF001"; + spApplication = "APP001"; + spCountry = "EN"; + + spId = "EDU001-APP001-APP001"; + + final STORKAuthnRequest request = new STORKAuthnRequest(); + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + authRequest = getEngine().generateSTORKAuthnRequest(request) + .getTokenSaml(); + + authenRequest = getEngine().validateSTORKAuthnRequest(authRequest); + + } catch (STORKSAMLEngineException e) { + fail("Error create STORKAuthnRequest"); + } + + ipAddress = "111.222.333.444"; + + pal = new PersonalAttributeList(); + + isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + ages = new ArrayList(); + + ages.add("16"); + ages.add("18"); + + isAgeOver.setValue(ages); + isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(isAgeOver); + + dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + final ArrayList date = new ArrayList(); + date.add("16/12/2008"); + dateOfBirth.setValue(date); + dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(dateOfBirth); + + eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + final ArrayList idNumber = new ArrayList(); + idNumber.add("123456789PA"); + eIDNumber.setValue(idNumber); + eIDNumber.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(eIDNumber); + + canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap address = new HashMap(); + + address.put("state", state); + address.put("municipalityCode", municipalityCode); + address.put("town", town); + address.put("postalCode", postalCode); + address.put("streetName", streetName); + address.put("streetNumber", streetNumber); + address.put("apartamentNumber", apartamentNumber); + + canRessAddress.setComplexValue(address); + pal.add(canRessAddress); + + newAttribute = new PersonalAttribute(); + newAttribute.setName("newAttribute2"); + newAttribute.setIsRequired(true); + newAttribute.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap values = new HashMap(); + + values.put("value1", "value1"); + values.put("value2", "value2"); + values.put("value3", "value3"); + values.put("value4", "value4"); + + newAttribute.setComplexValue(values); + pal.add(newAttribute); + + final STORKAttrQueryRequest arequest = new STORKAttrQueryRequest(); + arequest.setDestination(destination); + //request.setProviderName(spName); + arequest.setQaa(QAAL); + arequest.setPersonalAttributeList(pal2); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + arequest.setSpSector(spSector); + arequest.setSpInstitution(spInstitution); + arequest.setSpApplication(spApplication); + arequest.setSpCountry(spCountry); + arequest.setSPID(spId); + arequest.setCitizenCountryCode("IS"); + arequest.setAssertionConsumerServiceURL(assertConsumerUrl); + + try { + attrQueryRequest = getEngine().generateSTORKAttrQueryRequest(arequest) + .getTokenSaml(); + + attrQueryenRequest = getEngine().validateSTORKAttrQueryRequest(attrQueryRequest); + + } catch (STORKSAMLEngineException e) { + fail("Error create STORKAuthnRequest"); + } + + } + + /** + * Test generate authentication request without errors. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnResponseWithSimpleRes() throws STORKSAMLEngineException { + + //Create the response holding pal + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + + //List of query responses + List resList = new ArrayList(); + + final STORKAttrQueryResponse aResponse1 = new STORKAttrQueryResponse(); + aResponse1.setPersonalAttributeList(pal2); + + final STORKAttrQueryResponse aStorkResponse1 = getEngine2() + .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse1, ipAddress, + destination, isNotHashing); + + attrQueryResponse = aStorkResponse1.getTokenSaml(); + + resList.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + final STORKAttrQueryResponse aResponse2 = new STORKAttrQueryResponse(); + aResponse2.setPersonalAttributeList(pal2); + + final STORKAttrQueryResponse aStorkResponse2 = getEngine() + .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse2, ipAddress, + destination, isNotHashing); + + attrQueryResponse = aStorkResponse2.getTokenSaml(); + + resList.add(getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + //Create the final response containing query responses + final STORKAuthnResponse storkResponse = getEngine() + .generateSTORKAuthnResponseAfterQuery(authenRequest, response, ipAddress, + isNotHashing, resList); + + authResponse = storkResponse.getTokenSaml(); + + //Validate, write out and print out the attribute lists a + STORKAuthnResponse finalResponse = getEngine().validateSTORKAuthnResponseWithQuery(authResponse, ipAddress); + System.out.println("The original pal: " + finalResponse.getPersonalAttributeList().toString()); + for (int i = 0; i < finalResponse.getPersonalAttributeLists().size(); i++) + { + System.out.println("Pal "+ Integer.toString(i) + ": " + finalResponse.getPersonalAttributeLists().get(i).toString()); + } + System.out.println("The total pal: " + finalResponse.getTotalPersonalAttributeList().toString()); + + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthAttrQResponse.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(authResponse); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * Test generate authentication request without errors. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnResponseWithComplexRes() throws STORKSAMLEngineException { + + //Create the response holding pal + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + + //Create a list for the attribute query responses we have + List resList = new ArrayList(); + + //Create the first attribute query response + final STORKAttrQueryResponse aResponse1 = new STORKAttrQueryResponse(); + aResponse1.setPersonalAttributeList(pal2); + + //Generate the first response + final STORKAttrQueryResponse aStorkResponse1 = getEngine2() + .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse1, ipAddress, + destination, isNotHashing); + + attrQueryResponse = aStorkResponse1.getTokenSaml(); + + //Validate it and add to the response list + resList.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + //Create a second response like the first + final STORKAttrQueryResponse aResponse2 = new STORKAttrQueryResponse(); + aResponse2.setPersonalAttributeList(pal2); + + final STORKAttrQueryResponse aStorkResponse2 = getEngine() + .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse2, ipAddress, + destination, isNotHashing); + + attrQueryResponse = aStorkResponse2.getTokenSaml(); + + resList.add(getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + //Create a attribute query response which contains multiple assertions from an AP + final STORKAttrQueryResponse aResponseMulti = new STORKAttrQueryResponse(); + aResponseMulti.setPersonalAttributeList(pal2); + + //Create a list for the responses which the multiple assertion response will hold + List multiResponses = new ArrayList(); + + //Create two more simple responses which the multi assertion response will hold + final STORKAttrQueryResponse aResponse3 = new STORKAttrQueryResponse(); + aResponse3.setPersonalAttributeList(pal2); + + final STORKAttrQueryResponse aStorkResponse3 = getEngine2() + .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse3, ipAddress, + destination, isNotHashing); + + attrQueryResponse = aStorkResponse3.getTokenSaml(); + //Validate and add to the multi response + multiResponses.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + final STORKAttrQueryResponse aResponse4 = new STORKAttrQueryResponse(); + aResponse4.setPersonalAttributeList(pal2); + + final STORKAttrQueryResponse aStorkResponse4 = getEngine() + .generateSTORKAttrQueryResponse(attrQueryenRequest, aResponse4, ipAddress, + destination, isNotHashing); + + attrQueryResponse = aStorkResponse4.getTokenSaml(); + + multiResponses.add(getEngine2().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + //Generate the multi assertion query response + final STORKAttrQueryResponse aStorkResponseMulti = getEngine() + .generateSTORKAttrQueryResponseWithAssertions(attrQueryenRequest, aResponseMulti, multiResponses, + ipAddress, destination, isNotHashing); + + attrQueryResponse = aStorkResponseMulti.getTokenSaml(); + + //Add to the list of query responses + resList.add(getEngine().validateSTORKAttrQueryResponse(attrQueryResponse, ipAddress)); + + //Generate the stork response with all the query responses + final STORKAuthnResponse storkResponse = getEngine() + .generateSTORKAuthnResponseAfterQuery(authenRequest, response, ipAddress, + isNotHashing, resList); + + authResponse = storkResponse.getTokenSaml(); + + //Validate it, write out and print out the personal attribute lists + STORKAuthnResponse finalResponse = getEngine().validateSTORKAuthnResponseWithQuery(authResponse, ipAddress); + System.out.println("The original pal: " + finalResponse.getPersonalAttributeList().toString()); + for (int i = 0; i < finalResponse.getPersonalAttributeLists().size(); i++) + { + System.out.println("Pal "+ Integer.toString(i) + ": " + finalResponse.getPersonalAttributeLists().get(i).toString()); + } + System.out.println("The total pal: " + finalResponse.getTotalPersonalAttributeList().toString()); + + FileOutputStream output = null; + + try { + output = new FileOutputStream(new File(System.getProperty("user.dir") + "/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthAttrQMultiAssertResponse.xml")); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + output.write(authResponse); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + assertNotNull(finalResponse); + } +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java new file mode 100644 index 000000000..fe6fcd4f6 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/StorkResponseTest.java @@ -0,0 +1,935 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +package eu.stork.peps.test.simple; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +import org.junit.Ignore; +import org.junit.Test; +import org.opensaml.xml.parse.BasicParserPool; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import eu.stork.peps.auth.commons.IPersonalAttributeList; +import eu.stork.peps.auth.commons.PEPSUtil; +import eu.stork.peps.auth.commons.PersonalAttribute; +import eu.stork.peps.auth.commons.PersonalAttributeList; +import eu.stork.peps.auth.commons.STORKAttrQueryRequest; +import eu.stork.peps.auth.commons.STORKAttrQueryResponse; +import eu.stork.peps.auth.commons.STORKAuthnRequest; +import eu.stork.peps.auth.commons.STORKAuthnResponse; +import eu.stork.peps.auth.commons.STORKStatusCode; +import eu.stork.peps.auth.commons.STORKSubStatusCode; +import eu.stork.peps.auth.engine.STORKSAMLEngine; +import eu.stork.peps.exceptions.STORKSAMLEngineException; + +/** + * The Class AuthRequestTest. + */ +public class StorkResponseTest { + + /** The engine. */ + private static STORKSAMLEngine engine = STORKSAMLEngine.getInstance("CONF1"); + + /** + * Gets the engine. + * + * @return the engine + */ + public static STORKSAMLEngine getEngine() { + return engine; + } + + /** + * Sets the engine. + * + * @param newEngine the new engine + */ + public static void setEngine(final STORKSAMLEngine newEngine) { + StorkResponseTest.engine = newEngine; + } + + /** The destination. */ + private static String destination; + + /** The service provider name. */ + private static String spName; + + /** The service provider sector. */ + private static String spSector; + + /** The service provider institution. */ + private static String spInstitution; + + /** The service provider application. */ + private static String spApplication; + + /** The service provider country. */ + private static String spCountry; + + /** The service provider id. */ + private static String spId; + + /** The quality authentication assurance level. */ + private static final int QAAL = 3; + + /** The state. */ + private static String state = "ES"; + + /** The town. */ + private static String town = "Madrid"; + + /** The municipality code. */ + private static String municipalityCode = "MA001"; + + /** The postal code. */ + private static String postalCode = "28038"; + + /** The street name. */ + private static String streetName = "Marchamalo"; + + /** The street number. */ + private static String streetNumber = "3"; + + /** The apartament number. */ + private static String apartamentNumber = "5º E"; + + /** The List of Personal Attributes. */ + private static IPersonalAttributeList pal; + + /** The assertion consumer URL. */ + private static String assertConsumerUrl; + + /** The authentication request. */ + private static byte[] authRequest; + + /** The authentication response. */ + private static byte[] authResponse; + + /** The authentication request. */ + private static STORKAuthnRequest authenRequest; + + /** The authentication response. */ + private static STORKAuthnResponse authnResponse; + + /** The Constant LOG. */ + private static final Logger LOG = LoggerFactory + .getLogger(StorkResponseTest.class.getName()); + + /** + * Instantiates a new stork response test. + */ + public StorkResponseTest() { + super(); + } + + /** The IP address. */ + private static String ipAddress; + + /** The is hashing. */ + private final boolean isHashing = Boolean.TRUE; + + /** The is not hashing. */ + private final boolean isNotHashing = Boolean.FALSE; + + /** The ERROR text. */ + private static final String ERROR_TXT = "generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"; + + + /** Parser manager used to parse XML. */ + private static BasicParserPool parser; + + static { + parser = new BasicParserPool(); + parser.setNamespaceAware(true); + + pal = new PersonalAttributeList(); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(false); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + pal.add(isAgeOver); + + PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + pal.add(dateOfBirth); + + PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + pal.add(eIDNumber); + + final PersonalAttribute givenName = new PersonalAttribute(); + givenName.setName("givenName"); + givenName.setIsRequired(true); + pal.add(givenName); + + PersonalAttribute canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + pal.add(canRessAddress); + + PersonalAttribute newAttribute = new PersonalAttribute(); + newAttribute.setName("newAttribute2"); + newAttribute.setIsRequired(true); + pal.add(newAttribute); + + destination = "http://C-PEPS.gov.xx/PEPS/ColleagueRequest"; + assertConsumerUrl = "http://S-PEPS.gov.xx/PEPS/ColleagueResponse"; + spName = "University Oxford"; + + spName = "University of Oxford"; + spSector = "EDU001"; + spInstitution = "OXF001"; + spApplication = "APP001"; + spCountry = "EN"; + + spId = "EDU001-APP001-APP001"; + + final STORKAuthnRequest request = new STORKAuthnRequest(); + request.setDestination(destination); + request.setProviderName(spName); + request.setQaa(QAAL); + request.setPersonalAttributeList(pal); + request.setAssertionConsumerServiceURL(assertConsumerUrl); + + // news parameters + request.setSpSector(spSector); + request.setSpInstitution(spInstitution); + request.setSpApplication(spApplication); + request.setSpCountry(spCountry); + request.setSPID(spId); + request.setCitizenCountryCode("ES"); + + try { + authRequest = getEngine().generateSTORKAuthnRequest(request) + .getTokenSaml(); + + authenRequest = getEngine().validateSTORKAuthnRequest(authRequest); + + } catch (STORKSAMLEngineException e) { + fail("Error create STORKAuthnRequest"); + } + + ipAddress = "111.222.333.444"; + + pal = new PersonalAttributeList(); + + isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + ages = new ArrayList(); + + ages.add("16"); + ages.add("18"); + + isAgeOver.setValue(ages); + isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(isAgeOver); + + dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + final ArrayList date = new ArrayList(); + date.add("16/12/2008"); + dateOfBirth.setValue(date); + dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(dateOfBirth); + + eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + final ArrayList idNumber = new ArrayList(); + idNumber.add("123456789PÑ"); + eIDNumber.setValue(idNumber); + eIDNumber.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + pal.add(eIDNumber); + + canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap address = new HashMap(); + + address.put("state", state); + address.put("municipalityCode", municipalityCode); + address.put("town", town); + address.put("postalCode", postalCode); + address.put("streetName", streetName); + address.put("streetNumber", streetNumber); + address.put("apartamentNumber", apartamentNumber); + + canRessAddress.setComplexValue(address); + pal.add(canRessAddress); + + newAttribute = new PersonalAttribute(); + newAttribute.setName("newAttribute2"); + newAttribute.setIsRequired(true); + newAttribute.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap values = new HashMap(); + + values.put("value1", "value1"); + values.put("value2", "value2"); + values.put("value3", "value3"); + values.put("value4", "value4"); + + newAttribute.setComplexValue(values); + pal.add(newAttribute); + + } + + /** + * Test generate authentication request without errors. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnResponse() throws STORKSAMLEngineException { + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + + final STORKAuthnResponse storkResponse = getEngine() + .generateSTORKAuthnResponse(authenRequest, response, ipAddress, + isNotHashing); + + authResponse = storkResponse.getTokenSaml(); + + LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(authResponse)); + + + } + + /** + * Test validation id parameter mandatory. + */ + @Test + public final void testResponseMandatoryId() { + final String identifier = authenRequest.getSamlId(); + authenRequest.setSamlId(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + + try { + getEngine().generateSTORKAuthnResponse(authenRequest, response, + ipAddress, isHashing); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + authenRequest.setSamlId(identifier); + LOG.error("Error"); + } + } + + /** + * Test generate authentication response in response to err1. + */ + @Test + public final void testResponseMandatoryIssuer() { + + final String issuer = authenRequest.getIssuer(); + authenRequest.setIssuer(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + + try { + getEngine().generateSTORKAuthnResponse(authenRequest, response, + ipAddress, isHashing); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + authenRequest.setIssuer(issuer); + LOG.error("Error"); + } + } + + /** + * Test generate authentication response assertion consumer null. + */ + @Test + public final void testResponseMandatoryAssertionConsumerServiceURL() { + final String asserConsumerUrl = authenRequest + .getAssertionConsumerServiceURL(); + authenRequest.setAssertionConsumerServiceURL(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + try { + getEngine().generateSTORKAuthnResponse(authenRequest, response, + ipAddress, isHashing); + fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + authenRequest.setAssertionConsumerServiceURL(asserConsumerUrl); + LOG.error("Error"); + } + } + + /** + * Test generate authentication response IP address null. + */ + @Test + public final void testResponseValidationIP() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + + try { + getEngine().generateSTORKAuthnResponse(authenRequest, response, null, + isHashing); + fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test generate authentication response with personal attribute list null. + */ + @Test + public final void testResponseMandatoryPersonalAttributeList() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(null); + + + try { + getEngine().generateSTORKAuthnResponse(authenRequest, response, + ipAddress, isHashing); + fail("generateAuthnResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication response token null. + */ + @Test + public final void testResponseInvalidParametersToken() { + try { + getEngine().validateSTORKAuthnResponse(null, ipAddress); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication response IP null. + */ + @Test + public final void testResponseInvalidParametersIP() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setPersonalAttributeList(pal); + try { + authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAuthnResponse(authResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate authentication response parameter name wrong. + */ + @Test + public final void testResponseInvalidParametersAttr() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("AttrWrong"); + wrongList.add(worngAttr); + + + response.setPersonalAttributeList(wrongList); + try { + authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAuthnResponse(authResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate authentication response set null value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrSimpleValue() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("isAgeOver"); + worngAttr.setValue(null); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAuthnResponse(authResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate authentication response set null value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrNoValue() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("isAgeOver"); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAuthnResponse(authResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate authentication response set null value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrNoName() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAuthnResponse(authResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + /** + * Test validate authentication response set null complex value into attribute. + */ + @Test + public final void testResponseInvalidParametersAttrComplexValue() { + final STORKAuthnResponse response = new STORKAuthnResponse(); + final IPersonalAttributeList wrongList = new PersonalAttributeList(); + + final PersonalAttribute worngAttr = new PersonalAttribute(); + worngAttr.setName("isAgeOver"); + worngAttr.setComplexValue(null); + wrongList.add(worngAttr); + + response.setPersonalAttributeList(wrongList); + try { + authResponse = getEngine().generateSTORKAuthnResponse(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + // In Conf1 ipValidate is false + getEngine().validateSTORKAuthnResponse(authResponse, null); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + + + /** + * Test validate authentication response IP distinct and disabled validation + * IP. + */ + @Test + public final void testResponseInvalidParametersIPDistinct() { + try { + // ipAddress origin "111.222.333.444" + // ipAddrValidation = false + // Subject Confirmation Bearer. + + getEngine().validateSTORKAuthnResponse(authResponse, "127.0.0.1"); + fail("validateAuthenticationResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test response invalid parameters invalid token. + */ + @Test + public final void testResponseInvalidParametersTokenMsg() { + try { + // ipAddress origin "111.222.333.444" + // Subject Confirmation Bearer. + getEngine().validateSTORKAuthnResponse("errorMessage".getBytes(), + ipAddress); + fail("validateAuthenticationResponse(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + /** + * Test validate authentication response is fail. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthenticationResponseIsFail() + throws STORKSAMLEngineException { + if (authResponse == null) + testGenerateAuthnResponse(); + + authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, + ipAddress); + + assertFalse("Generate incorrect response: ", authnResponse.isFail()); + } + + /** + * Test validate authentication response destination. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthenticationResponseDestination() + throws STORKSAMLEngineException { + authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, + ipAddress); + + assertEquals("Destination incorrect: ", + authnResponse.getInResponseTo(), authenRequest.getSamlId()); + } + + /** + * Test validate authentication response values. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + public final void testValidateAuthenticationResponseValuesComplex() + throws STORKSAMLEngineException { + authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, + ipAddress); + + assertEquals("Country incorrect:", authnResponse.getCountry(), "EN"); + + final Iterator iterator = authnResponse + .getPersonalAttributeList().iterator(); + + while (iterator.hasNext()) { + final PersonalAttribute attribute = iterator.next(); + if (attribute.getName().equalsIgnoreCase( + "canonicalResidenceAddress")) { + assertEquals("State incorrect: ", state, attribute + .getComplexValue().get("state")); + assertEquals("Municipality Code incorrect: ", municipalityCode, + attribute.getComplexValue().get("municipalityCode")); + assertEquals("Town incorrect: ", town, attribute + .getComplexValue().get("town")); + assertEquals("Postal code incorrect: ", postalCode, attribute + .getComplexValue().get("postalCode")); + assertEquals("Street name incorrect: ", streetName, attribute + .getComplexValue().get("streetName")); + assertEquals("Street number incorrect: ", streetNumber, + attribute.getComplexValue().get("streetNumber")); + assertEquals("Apartament number incorrect: ", apartamentNumber, + attribute.getComplexValue().get("apartamentNumber")); + } + } + } + + /** + * Test generate authenticate response fail in response to it's null. + * @throws STORKSAMLEngineException + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test //( expected=STORKSAMLEngineException.class) + public final void testGenerateAuthnResponseFailInResponseToNull() throws STORKSAMLEngineException { + final String identifier = authenRequest.getSamlId(); + authenRequest.setSamlId(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage(""); + + try { + authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + fail(ERROR_TXT); + } catch (STORKSAMLEngineException e) { + authenRequest.setSamlId(identifier); + LOG.error("Error"); + //throw new STORKSAMLEngineException(e); + } + } + + /** + * Test generate authenticate response fail assertion consumer URL err1. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnResponseFailAssertionConsumerUrlNull() + throws STORKSAMLEngineException { + + final String assertConsumerUrl = authenRequest + .getAssertionConsumerServiceURL(); + authenRequest.setAssertionConsumerServiceURL(null); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage(""); + + try { + authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + fail("generateAuthnResponseFail(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + authenRequest.setAssertionConsumerServiceURL(assertConsumerUrl); + LOG.error("Error"); + } + } + + /** + * Test generate authentication response fail code error err1. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthnResponseFailCodeErrorNull() + throws STORKSAMLEngineException { + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setStatusCode(null); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage(""); + + try { + authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + fail("generateAuthnResponseFail(...) should've thrown an STORKSAMLEngineException!"); + } catch (STORKSAMLEngineException e) { + LOG.error("Error"); + } + } + + + + + /** + * Test generate authentication request without errors. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthnResponse() throws STORKSAMLEngineException { + + IPersonalAttributeList palist = new PersonalAttributeList(); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(true); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + isAgeOver.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + palist.add(isAgeOver); + + PersonalAttribute dateOfBirth = new PersonalAttribute(); + dateOfBirth.setName("dateOfBirth"); + dateOfBirth.setIsRequired(false); + final ArrayList date = new ArrayList(); + date.add("16/12/2008"); + dateOfBirth.setValue(date); + dateOfBirth.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + palist.add(dateOfBirth); + + + PersonalAttribute eIDNumber = new PersonalAttribute(); + eIDNumber.setName("eIdentifier"); + eIDNumber.setIsRequired(true); + + final ArrayList idNumber = new ArrayList(); + idNumber.add("123456789PÑ"); + + final HashMap complex = new HashMap(); + complex.put("one", "two"); + + //eIDNumber.setValue(null); + //eIDNumber.setValue(idNumber); + //eIDNumber.setComplexValue(complex); + + eIDNumber.setStatus(STORKStatusCode.STATUS_NOT_AVAILABLE.toString()); + palist.add(eIDNumber); + + PersonalAttribute canRessAddress = new PersonalAttribute(); + canRessAddress.setName("canonicalResidenceAddress"); + canRessAddress.setIsRequired(true); + canRessAddress.setStatus(STORKStatusCode.STATUS_AVAILABLE.toString()); + final HashMap address = new HashMap(); + + address.put("state", state); + address.put("municipalityCode", municipalityCode); + address.put("town", town); + address.put("postalCode", postalCode); + address.put("streetName", streetName); + address.put("streetNumber", streetNumber); + address.put("apartamentNumber", apartamentNumber); + + canRessAddress.setComplexValue(address); + palist.add(canRessAddress); + + + final STORKAuthnResponse response = new STORKAuthnResponse(); + + response.setPersonalAttributeList(palist); + + final STORKAuthnResponse storkResponse = getEngine() + .generateSTORKAuthnResponse(authenRequest, response, ipAddress, + isNotHashing); + + authResponse = storkResponse.getTokenSaml(); + LOG.info("Request id: " + authenRequest.getSamlId()); + + LOG.info("RESPONSE: " + SSETestUtils.encodeSAMLToken(authResponse)); + + + authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, + ipAddress); + + LOG.info("RESPONSE ID: " + authnResponse.getSamlId()); + LOG.info("RESPONSE IN_RESPONSE_TO: " + authnResponse.getInResponseTo()); + LOG.info("RESPONSE COUNTRY: " + authnResponse.getCountry()); + + } + + + + + + /** + * Test validate authentication response fail is fail. + * + * @throws STORKSAMLEngineException the STORKSAML engine exception + */ + @Test + public final void testValidateAuthenticationResponseFailIsFail() + throws STORKSAMLEngineException { + + final STORKAuthnResponse response = new STORKAuthnResponse(); + response.setStatusCode(STORKStatusCode.REQUESTER_URI.toString()); + response.setSubStatusCode(STORKSubStatusCode.AUTHN_FAILED_URI.toString()); + response.setMessage("message"); + + authResponse = getEngine().generateSTORKAuthnResponseFail(authenRequest, + response, ipAddress, isNotHashing).getTokenSaml(); + + LOG.error("ERROR_FAIL: " + PEPSUtil.encodeSAMLToken(authResponse)); + + authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, + ipAddress); + + LOG.info("COUNTRY: " + authnResponse.getCountry()); + assertTrue("Generate incorrect response: ", authnResponse.isFail()); + } + + /** + * Test generate/validate response with signedDoc + * + * @throws STORKSAMLEngineException + * the STORKSAML engine exception + */ + @Test + public final void testGenerateAuthenResponseWithSignedDoc() + throws STORKSAMLEngineException { + + String signedDocResponse = " urn:oasis:names:tc:dss:1.0:resultmajor:Success PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48ZHM6U2lnbmF0dXJlIHhtbG5zOmRzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjxkczpTaWduZWRJbmZvPjxkczpDYW5vbmljYWxpemF0aW9uTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMS9SRUMteG1sLWMxNG4tMjAwMTAzMTUiLz48ZHM6U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI3JzYS1zaGExIi8+PGRzOlJlZmVyZW5jZSBJZD0iUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyIgVHlwZT0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnI09iamVjdCIgVVJJPSIjT2JqZWN0LTk4NzMzY2RlLThiY2MtNDhhMC05Yjc3LTBlOTk5N2JkZDA1OCI+PGRzOlRyYW5zZm9ybXM+PGRzOlRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNiYXNlNjQiLz48L2RzOlRyYW5zZm9ybXM+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPkNrMVZxTmQ0NVFJdnEzQVpkOFhZUUx2RWh0QT08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjxkczpSZWZlcmVuY2UgVHlwZT0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMyNTaWduZWRQcm9wZXJ0aWVzIiBVUkk9IiNTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT5BNVk5MW40cXBMZ3l0VFc3ZnhqWENVZVJ2NTQ9PC9kczpEaWdlc3RWYWx1ZT48L2RzOlJlZmVyZW5jZT48ZHM6UmVmZXJlbmNlIFVSST0iI1NpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItS2V5SW5mbyI+PGRzOkRpZ2VzdE1ldGhvZCBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvMDkveG1sZHNpZyNzaGExIi8+PGRzOkRpZ2VzdFZhbHVlPlZQWDRuS0Z5UzZyRitGNmNSUjBQck5aZHc2Zz08L2RzOkRpZ2VzdFZhbHVlPjwvZHM6UmVmZXJlbmNlPjwvZHM6U2lnbmVkSW5mbz48ZHM6U2lnbmF0dXJlVmFsdWUgSWQ9IlNpZ25hdHVyZS04ZWFiZDBhNS02NjBkLTRhZmQtOTkwNS0wYWJjNzU1M2QxOTItU2lnbmF0dXJlVmFsdWUiPkxiS04vL0M3WGt5eFR0WVRpQ1VScjhuWnp4QW1zdGNNZDBDZ0VBQ3JLMWR5Z1JIcUdjSzR4dHMrV0NVOFB5RXFXclJJVFl6SXV3LzcNClY0Wno5VFQ2MHA0S1RNZXd1UUw2NHNrRVN4MllnMkVkaWtTTyt0S3hXa2hyYVVzbVZiR2JQbW1jbUR2OTd0SER3ODg3NDdlRnE1RjUNCnYrYVZTeUF6MDNpVUttdVNlSDg9PC9kczpTaWduYXR1cmVWYWx1ZT48ZHM6S2V5SW5mbyBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1LZXlJbmZvIj48ZHM6S2V5VmFsdWU+PGRzOlJTQUtleVZhbHVlPjxkczpNb2R1bHVzPnd1Y21qOXRJV3J2d2JTVFVEZndLbCtKdERNTUVSMGNMZDZEa0JTcjc5MHQrckdOakVTcVlqUndFSWVCbktvUUhQeDVIb1JlRjg4L3QNCnFZOStDaEVYcExITHM5cDVhWDdTREp1YnBRTWZwMXRERlgzNHl3Z3hTUXZjZWVKUVdCWGppZXVJbWZDMjFzNGJPY2dKYlYxaGJpZ1MNCnpPS1RRS3IxVHpkR1IrdVJ5MDA9PC9kczpNb2R1bHVzPjxkczpFeHBvbmVudD5BUUFCPC9kczpFeHBvbmVudD48L2RzOlJTQUtleVZhbHVlPjwvZHM6S2V5VmFsdWU+PGRzOlg1MDlEYXRhPjxkczpYNTA5Q2VydGlmaWNhdGU+TUlJSW1UQ0NCNEdnQXdJQkFnSURBWFVVTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUlCT3pFTE1Ba0dBMVVFQmhNQ1JWTXhPekE1QmdOVg0KQkFvVE1rRm5aVzVqYVdFZ1EyRjBZV3hoYm1FZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUNoT1NVWWdVUzB3T0RBeE1UYzJMVWtwTVRRdw0KTWdZRFZRUUhFeXRRWVhOellYUm5aU0JrWlNCc1lTQkRiMjVqWlhCamFXOGdNVEVnTURnd01EZ2dRbUZ5WTJWc2IyNWhNUzR3TEFZRA0KVlFRTEV5VlRaWEoyWldseklGQjFZbXhwWTNNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVWRFZpMHlNVFV3TXdZRFZRUUxFeXhXWldkbA0KZFNCb2RIUndjem92TDNkM2R5NWpZWFJqWlhKMExtNWxkQzkyWlhKRFNVTXRNaUFvWXlrd016RTFNRE1HQTFVRUN4TXNSVzUwYVhSaA0KZENCd2RXSnNhV05oSUdSbElHTmxjblJwWm1sallXTnBieUJrWlNCamFYVjBZV1JoYm5NeEd6QVpCZ05WQkFNVEVsQlNSVkJTVDBSVg0KUTBOSlR5QkpSRU5oZERBZUZ3MHhNREF5TVRFeE9ESXlNRFJhRncweE5EQXlNVEF4T0RJeU1EUmFNSUd3TVFzd0NRWURWUVFHRXdKRg0KVXpFMU1ETUdBMVVFQ3hNc1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5U1VSRFlYUWdLR01wTURNeA0KRmpBVUJnTlZCQVFURFVKRlVreEJUa2RCSUZOUFZFOHhGekFWQmdOVkJDb1REazFCVWtsQklFVk9SMUpCUTBsQk1SSXdFQVlEVlFRRg0KRXdreE1EQXdNRGswTkZNeEpUQWpCZ05WQkFNVEhFMUJVa2xCSUVWT1IxSkJRMGxCSUVKRlVreEJUa2RCSUZOUFZFOHdnWjh3RFFZSg0KS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQkFNTG5Kby9iU0ZxNzhHMGsxQTM4Q3BmaWJRekRCRWRIQzNlZzVBVXErL2RMZnF4ag0KWXhFcW1JMGNCQ0hnWnlxRUJ6OGVSNkVYaGZQUDdhbVBmZ29SRjZTeHk3UGFlV2wrMGd5Ym02VURINmRiUXhWOStNc0lNVWtMM0huaQ0KVUZnVjQ0bnJpSm53dHRiT0d6bklDVzFkWVc0b0VzemlrMENxOVU4M1JrZnJrY3ROQWdNQkFBR2pnZ1N3TUlJRXJEQU1CZ05WSFJNQg0KQWY4RUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJRm9EQ0J6QVlEVlIwUkJJSEVNSUhCZ1E5aWMyOTBiMEJuYldGcGJDNWpiMjJrZ1lVdw0KZ1lJeEN6QUpCZ05WQkFZVEFrVlRNU3N3S1FZRFZRUUtGQ0pCWjhPb2JtTnBZU0JEWVhSaGJHRnVZU0JrWlNCRFpYSjBhV1pwWTJGag0KYWNPek1RNHdEQVlEVlFRTEV3VkpSRU5CVkRFUE1BMEdBMVVFQlJNR01ERTNOVEUwTVNVd0l3WURWUVFERXh4TlFWSkpRU0JGVGtkUw0KUVVOSlFTQkNSVkpNUVU1SFFTQlRUMVJQb0JBR0Npc0dBUVFCOVhnQkFRR2dBZ3dBb0JRR0RsWUVBQUVEQmdFRUFmVjRBUUVDb0FJTQ0KQURBZkJnTlZIUklFR0RBV2dSUmxZMTlwWkdOaGRFQmpZWFJqWlhKMExtNWxkREFkQmdOVkhRNEVGZ1FVQUZYanVOc2tCMk1seXZVQg0KaDdwOFRKMHVKMHd3Z2dGSUJnTlZIU01FZ2dFL01JSUJPNEFVUkt2Y2tVaE4xNGg0Q24vZ2RPRG42NzIzS1Z5aGdnRVBwSUlCQ3pDQw0KQVFjeEN6QUpCZ05WQkFZVEFrVlRNVHN3T1FZRFZRUUtFekpCWjJWdVkybGhJRU5oZEdGc1lXNWhJR1JsSUVObGNuUnBabWxqWVdOcA0KYnlBb1RrbEdJRkV0TURnd01URTNOaTFKS1RFb01DWUdBMVVFQ3hNZlUyVnlkbVZwY3lCUWRXSnNhV056SUdSbElFTmxjblJwWm1sag0KWVdOcGJ6RThNRG9HQTFVRUN4TXpWbVZuWlhVZ2FIUjBjSE02THk5M2QzY3VZMkYwWTJWeWRDNXVaWFF2ZG1WeWNISmxjSEp2WkhWag0KWTJsdklDaGpLVEF6TVRVd013WURWUVFMRXl4S1pYSmhjbkYxYVdFZ1JXNTBhWFJoZEhNZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUVOaA0KZEdGc1lXNWxjekVjTUJvR0ExVUVBeE1UVUZKRlVGSlBSRlZEUTBsUElFVkRMVUZEUTRJUWR3S1R0TTFFRVU5RkVQWFVZSGdnaERBZA0KQmdOVkhTVUVGakFVQmdnckJnRUZCUWNEQWdZSUt3WUJCUVVIQXdRd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdXZ01EUUdDQ3NHQVFVRg0KQndFQkJDZ3dKakFrQmdnckJnRUZCUWN3QVlZWWFIUjBjSE02THk5dlkzTndMbU5oZEdObGNuUXVibVYwTUJnR0NDc0dBUVVGQndFRA0KQkF3d0NqQUlCZ1lFQUk1R0FRRXdnWVlHQTFVZEh3Ui9NSDB3UEtBNm9EaUdObWgwZEhBNkx5OWxjSE5qWkM1allYUmpaWEowTG01bA0KZEM5amNtd3ZjSEpsY0hKdlpIVmpZMmx2WDJWakxXbGtZMkYwTG1OeWJEQTlvRHVnT1lZM2FIUjBjRG92TDJWd2MyTmtNaTVqWVhSag0KWlhKMExtNWxkQzlqY213dmNISmxjSEp2WkhWalkybHZYMlZqTFdsa1kyRjBMbU55YkRDQjlnWURWUjBnQklIdU1JSHJNSUhvQmd3cg0KQmdFRUFmVjRBUU1CVmdFd2dkY3dMQVlJS3dZQkJRVUhBZ0VXSUdoMGRIQnpPaTh2ZDNkM0xtTmhkR05sY25RdWJtVjBMM1psY2tsRQ0KUTJGME1JR21CZ2dyQmdFRkJRY0NBakNCbVJxQmxrRnhkV1Z6ZENEdnY3MXpJSFZ1SUdObGNuUnBabWxqWVhRZ2NHVnljMjl1WVd3Zw0KU1VSRFFWUXNJSEpsWTI5dVpXZDFkQ0JrSjJsa1pXNTBhV1pwWTJGajc3KzlMQ0J6YVdkdVlYUjFjbUVnYVNCNGFXWnlZWFFnWkdVZw0KWTJ4aGMzTmxJRElnYVc1a2FYWnBaSFZoYkM0Z1ZtVm5aWFVnYUhSMGNITTZMeTkzZDNjdVkyRjBZMlZ5ZEM1dVpYUXZkbVZ5UkVOaA0KZERBdEJnTlZIUWtFSmpBa01CQUdDQ3NHQVFVRkJ3a0VNUVFUQWtWVE1CQUdDQ3NHQVFVRkJ3a0ZNUVFUQWtWVE1BMEdDU3FHU0liMw0KRFFFQkJRVUFBNElCQVFDcTc3ODBSR1FNTEIxZ2tkTk1mTFhuZ3FNb1JIR0taYnZ6a3JxSUFtVDhXQWQxRThyQXBoUjkveExKVXRwNQ0KbGJnMmZScjVibDJqOE9WREJLMlltRzQxaDhBRG40U1RJL0FwZU5JTlNmalpzNk5Sc25XekZ5ZlhYbVBDSFlGQi9YV3p5aW1DRXhndg0KdnR1SCszUUF3Y3dobjUwUExFdWh3NUM1dmxYN0x5NUs2ckxMTUZOVVVNYldWeTFoWmVsSy9DQlRjQWpJTzM4TlkrdllSQU1LU2Y0TQ0KL2daUXo0cUJlRlZKYTUyUjdOY0FxQ2ZyZkxmYVhwYkRTZzk4eG9CZU5zMmluR3p4OFVTZ0VyTFpqS0pzZG4vS2pURDlnUy9zVGRRNg0KUTdpZHFsZDJMRlZsTzIvYjk0Wk5aQmNTLzc4RU9EWGdkV2ZreVBDN1J3OHJlOW5JMy9qVDwvZHM6WDUwOUNlcnRpZmljYXRlPjwvZHM6WDUwOURhdGE+PC9kczpLZXlJbmZvPjxkczpPYmplY3QgRW5jb2Rpbmc9ImJhc2U2NCIgSWQ9Ik9iamVjdC05ODczM2NkZS04YmNjLTQ4YTAtOWI3Ny0wZTk5OTdiZGQwNTgiIE1pbWVUeXBlPSJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iPlNHVnNiRzhnVjI5eWJHUT08L2RzOk9iamVjdD48ZHM6T2JqZWN0Pjx4YWRlczpRdWFsaWZ5aW5nUHJvcGVydGllcyB4bWxuczp4YWRlcz0iaHR0cDovL3VyaS5ldHNpLm9yZy8wMTkwMy92MS4zLjIjIiBJZD0iU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1RdWFsaWZ5aW5nUHJvcGVydGllcyIgVGFyZ2V0PSIjU2lnbmF0dXJlLThlYWJkMGE1LTY2MGQtNGFmZC05OTA1LTBhYmM3NTUzZDE5Mi1TaWduYXR1cmUiPjx4YWRlczpTaWduZWRQcm9wZXJ0aWVzIElkPSJTaWduYXR1cmUtOGVhYmQwYTUtNjYwZC00YWZkLTk5MDUtMGFiYzc1NTNkMTkyLVNpZ25lZFByb3BlcnRpZXMiPjx4YWRlczpTaWduZWRTaWduYXR1cmVQcm9wZXJ0aWVzPjx4YWRlczpTaWduaW5nVGltZT4yMDExLTAzLTIxVDExOjQ0OjQyKzAxOjAwPC94YWRlczpTaWduaW5nVGltZT48eGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjx4YWRlczpDZXJ0Pjx4YWRlczpDZXJ0RGlnZXN0PjxkczpEaWdlc3RNZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwLzA5L3htbGRzaWcjc2hhMSIvPjxkczpEaWdlc3RWYWx1ZT4zbTZ3OTlUb3lTZDlKcEJsMWdCazhEei9iYlU9PC9kczpEaWdlc3RWYWx1ZT48L3hhZGVzOkNlcnREaWdlc3Q+PHhhZGVzOklzc3VlclNlcmlhbD48ZHM6WDUwOUlzc3Vlck5hbWU+Q049UFJFUFJPRFVDQ0lPIElEQ2F0LCBPVT1FbnRpdGF0IHB1YmxpY2EgZGUgY2VydGlmaWNhY2lvIGRlIGNpdXRhZGFucywgT1U9VmVnZXUgaHR0cHM6Ly93d3cuY2F0Y2VydC5uZXQvdmVyQ0lDLTIgKGMpMDMsIE9VPVNlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8gRUNWLTIsIEw9UGFzc2F0Z2UgZGUgbGEgQ29uY2VwY2lvIDExIDA4MDA4IEJhcmNlbG9uYSwgTz1BZ2VuY2lhIENhdGFsYW5hIGRlIENlcnRpZmljYWNpbyAoTklGIFEtMDgwMTE3Ni1JKSwgQz1FUzwvZHM6WDUwOUlzc3Vlck5hbWU+PGRzOlg1MDlTZXJpYWxOdW1iZXI+OTU1MDg8L2RzOlg1MDlTZXJpYWxOdW1iZXI+PC94YWRlczpJc3N1ZXJTZXJpYWw+PC94YWRlczpDZXJ0PjwveGFkZXM6U2lnbmluZ0NlcnRpZmljYXRlPjwveGFkZXM6U2lnbmVkU2lnbmF0dXJlUHJvcGVydGllcz48eGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PHhhZGVzOkRhdGFPYmplY3RGb3JtYXQgT2JqZWN0UmVmZXJlbmNlPSIjUmVmZXJlbmNlLWJhYmE0ZDFhLWExN2UtNDJjNi05N2QyLWJlZWUxMzUwOTUwMyI+PHhhZGVzOk1pbWVUeXBlPmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTwveGFkZXM6TWltZVR5cGU+PHhhZGVzOkVuY29kaW5nPmJhc2U2NDwveGFkZXM6RW5jb2Rpbmc+PC94YWRlczpEYXRhT2JqZWN0Rm9ybWF0PjwveGFkZXM6U2lnbmVkRGF0YU9iamVjdFByb3BlcnRpZXM+PC94YWRlczpTaWduZWRQcm9wZXJ0aWVzPjwveGFkZXM6UXVhbGlmeWluZ1Byb3BlcnRpZXM+PC9kczpPYmplY3Q+PC9kczpTaWduYXR1cmU+ "; + + IPersonalAttributeList palist = new PersonalAttributeList(); + + PersonalAttribute signedDoc = new PersonalAttribute(); + signedDoc.setName("signedDoc"); + signedDoc.setIsRequired(false); + ArrayList signed = new ArrayList(); + signed.add(signedDocResponse); + signedDoc.setValue(signed); + palist.add(signedDoc); + + PersonalAttribute isAgeOver = new PersonalAttribute(); + isAgeOver.setName("isAgeOver"); + isAgeOver.setIsRequired(false); + ArrayList ages = new ArrayList(); + ages.add("16"); + ages.add("18"); + isAgeOver.setValue(ages); + palist.add(isAgeOver); + + authenRequest.setPersonalAttributeList(palist); + + final STORKAuthnResponse response = new STORKAuthnResponse(); + + response.setPersonalAttributeList(palist); + + final STORKAuthnResponse storkResponse = getEngine() + .generateSTORKAuthnResponse(authenRequest, response, ipAddress, + isNotHashing); + + authResponse = storkResponse.getTokenSaml(); + authnResponse = getEngine().validateSTORKAuthnResponse(authResponse, + ipAddress); + + assertTrue("SignedDoc response should be the same: ", authnResponse + .getPersonalAttributeList().get("signedDoc").getValue().get(0) + .equals(signedDocResponse)); + + } +} diff --git a/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/package-info.java b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/package-info.java new file mode 100644 index 000000000..1c34e2ad5 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/java/eu/stork/peps/test/simple/package-info.java @@ -0,0 +1,20 @@ +/* + * Licensed under the EUPL, Version 1.1 or – as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. You may + * obtain a copy of the Licence at: + * + * http://www.osor.eu/eupl/european-union-public-licence-eupl-v.1.1 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * Licence for the specific language governing permissions and limitations under + * the Licence. + */ + +/** + * Provides the classes necessary to create a SAML message. + * @since 1.0 + */ +package eu.stork.peps.test.simple; \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/SamlEngine.xml b/id/server/stork2-saml-engine/src/test/resources/SamlEngine.xml new file mode 100644 index 000000000..171e05f12 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/SamlEngine.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf0.xml b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf0.xml new file mode 100644 index 000000000..a9f2038b8 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf0.xml @@ -0,0 +1,21 @@ + + + + + + SWModule sign with JKS. + C:\opt\keystores\storkDemoKeysTest.jks + local-demo + local-demo + CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES + 4BA89DB2 + JKS + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf1.xml b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf1.xml new file mode 100644 index 000000000..e556a7331 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf1.xml @@ -0,0 +1,12 @@ + + + + + SWModule sign with JKS. + C:\opt\keystores\storkDemoKeysTest.jks + local-demo + local-demo + CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES + 4BA89DB2 + JKS + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf2.xml b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf2.xml new file mode 100644 index 000000000..3da1e33df --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf2.xml @@ -0,0 +1,12 @@ + + + + + SWModule sign with JKS. + C:\opt\keystores\keyStoreCountry2.jks + local-demo + local-demo + CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES + 4BA89DB2 + JKS + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf3.xml b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf3.xml new file mode 100644 index 000000000..4c14a1711 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/SignModule_Conf3.xml @@ -0,0 +1,12 @@ + + + + + SWModule sign with JKS. + C:\opt\keystores\keyStoreCountry3.jks + local-demo + local-demo + CN=local-demo, O=Indra, L=Madrid, ST=Spain, C=ES + 4BA89DB2 + JKS + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/SignModule_P11.xml b/id/server/stork2-saml-engine/src/test/resources/SignModule_P11.xml new file mode 100644 index 000000000..c683d97c3 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/SignModule_P11.xml @@ -0,0 +1,11 @@ + + + + + HWModule sign with interface PKCS11. + p11Config.cfg + ******* + CN=XXXXXXXXX + xxxxxxxxxxxxxx + PKCS11 + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf0.xml b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf0.xml new file mode 100644 index 000000000..8c3a94601 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf0.xml @@ -0,0 +1,87 @@ + + + + + SAML constants for AuthnRequests and Responses. + + + unspecified + + + obtained + + + entity + + + + HTTP-POST + + + + + + + + + + false + + + true + + + http://S-PEPS.gov.xx + + + http://C-PEPS.gov.xx + + + 300 + + + false + + + + http://www.stork.gov.eu/1.0/eIdentifier + http://www.stork.gov.eu/1.0/givenName + http://www.stork.gov.eu/1.0/surname + http://www.stork.gov.eu/1.0/inheritedFamilyName + http://www.stork.gov.eu/1.0/adoptedFamilyName + http://www.stork.gov.eu/1.0/gender + http://www.stork.gov.eu/1.0/dateOfBirth + http://www.stork.gov.eu/1.0/countryCodeOfBirth + http://www.stork.gov.eu/1.0/nationalityCode + http://www.stork.gov.eu/1.0/maritalStatus + http://www.stork.gov.eu/1.0/residenceAddress + http://www.stork.gov.eu/1.0/eMail + http://www.stork.gov.eu/1.0/academicTitle + http://www.stork.gov.eu/1.0/pseudonym + http://www.stork.gov.eu/1.0/age + http://www.stork.gov.eu/1.0/isAgeOver + + http://www.stork.gov.eu/1.0/textResidenceAddress + http://www.stork.gov.eu/1.0/canonicalResidenceAddress + + http://www.stork.gov.eu/1.0/title + http://www.stork.gov.eu/1.0/residencePermit + + http://www.stork.gov.eu/1.0/signedDoc + http://www.stork.gov.eu/1.0/citizen509Certificate + + http://www.stork.gov.eu/1.0/newAttribute1 + http://www.stork.gov.eu/1.0/newAttribute2 + http://www.stork.gov.eu/1.0/hasDegree + http://www.stork.gov.eu/1.0/mandateContent + + http://www.stork.gov.eu/1.0/docRequest + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf1.xml b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf1.xml new file mode 100644 index 000000000..ad04cc3df --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf1.xml @@ -0,0 +1,85 @@ + + + + + SAML constants for AuthnRequests and Responses. + + + unspecified + + + obtained + + + entity + + + + HTTP-POST + + + + + + + + + + false + + + true + + + http://S-PEPS.gov.xx + + + http://C-PEPS.gov.xx + + + 300 + + + false + + + + http://www.stork.gov.eu/1.0/eIdentifier + http://www.stork.gov.eu/1.0/givenName + http://www.stork.gov.eu/1.0/surname + http://www.stork.gov.eu/1.0/inheritedFamilyName + http://www.stork.gov.eu/1.0/adoptedFamilyName + http://www.stork.gov.eu/1.0/gender + http://www.stork.gov.eu/1.0/dateOfBirth + http://www.stork.gov.eu/1.0/countryCodeOfBirth + http://www.stork.gov.eu/1.0/nationalityCode + http://www.stork.gov.eu/1.0/maritalStatus + http://www.stork.gov.eu/1.0/residenceAddress + http://www.stork.gov.eu/1.0/eMail + http://www.stork.gov.eu/1.0/academicTitle + http://www.stork.gov.eu/1.0/pseudonym + http://www.stork.gov.eu/1.0/age + http://www.stork.gov.eu/1.0/isAgeOver + + http://www.stork.gov.eu/1.0/textResidenceAddress + http://www.stork.gov.eu/1.0/canonicalResidenceAddress + + http://www.stork.gov.eu/1.0/title + http://www.stork.gov.eu/1.0/residencePermit + + http://www.stork.gov.eu/1.0/signedDoc + http://www.stork.gov.eu/1.0/citizen509Certificate + + http://www.stork.gov.eu/1.0/newAttribute1 + http://www.stork.gov.eu/1.0/newAttribute2 + http://www.stork.gov.eu/1.0/hasDegree + http://www.stork.gov.eu/1.0/mandateContent + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf2.xml b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf2.xml new file mode 100644 index 000000000..fd1db92ac --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf2.xml @@ -0,0 +1,60 @@ + + + + + SAML constants for AuthnRequests and Responses. + + + unspecified + + obtained + + + entity + + + + HTTP-POST + + false + false + false + + + http://S-PEPS.gov.xx + + + http://C-PEPS.gov.xx + + + 300 + + + false + + + false + + + + http://www.stork.gov.eu/1.0/eIdentifier + http://www.stork.gov.eu/1.0/givenName + http://www.stork.gov.eu/1.0/surname + http://www.stork.gov.eu/1.0/inheritedFamilyName + http://www.stork.gov.eu/1.0/adoptedFamilyName + http://www.stork.gov.eu/1.0/gender + http://www.stork.gov.eu/1.0/dateOfBirth + http://www.stork.gov.eu/1.0/countryCodeOfBirth + http://www.stork.gov.eu/1.0/nationalityCode + http://www.stork.gov.eu/1.0/maritalStatus + http://www.stork.gov.eu/1.0/residenceAddress + http://www.stork.gov.eu/1.0/eMail + http://www.stork.gov.eu/1.0/academicTitle + http://www.stork.gov.eu/1.0/pseudonym + http://www.stork.gov.eu/1.0/age + http://www.stork.gov.eu/1.0/isAgeOver + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf3.xml b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf3.xml new file mode 100644 index 000000000..bea40d274 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/StorkSamlEngine_Conf3.xml @@ -0,0 +1,57 @@ + + + + + SAML constants for AuthnRequests and Responses. + + + unspecified + + obtained + + + entity + + + + HTTP-POST + + false + false + false + + + http://S-PEPS.gov.xx + + + http://C-PEPS.gov.xx + + + 300 + + + false + + + http://www.stork.gov.eu/1.0/eIdentifier + http://www.stork.gov.eu/1.0/givenName + http://www.stork.gov.eu/1.0/surname + http://www.stork.gov.eu/1.0/inheritedFamilyName + http://www.stork.gov.eu/1.0/adoptedFamilyName + http://www.stork.gov.eu/1.0/gender + http://www.stork.gov.eu/1.0/dateOfBirth + http://www.stork.gov.eu/1.0/countryCodeOfBirth + http://www.stork.gov.eu/1.0/nationalityCode + http://www.stork.gov.eu/1.0/maritalStatus + http://www.stork.gov.eu/1.0/residenceAddress + http://www.stork.gov.eu/1.0/eMail + http://www.stork.gov.eu/1.0/academicTitle + http://www.stork.gov.eu/1.0/pseudonym + http://www.stork.gov.eu/1.0/age + http://www.stork.gov.eu/1.0/isAgeOver + http://www.stork.gov.eu/1.0/unknown + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml new file mode 100644 index 000000000..3764389e4 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequest.xml @@ -0,0 +1,82 @@ + + + http://S-PEPS.gov.xx + + + + + + + + + + + + + BgPDTVCv7BhiWIs6HsC06jaHaag= + + + dIC61bGi6Jqp1zSVojpjaVq9WaZcDtNImXgo1Dyze5/hJA07Sy4TaHu+/IuLEC99aLjM6rxh2UUNqpPaQCFlF5eVkVv/c4gHEZVyevhjJKTidqmnuhlI78PGMx2thfxFsHsPcqHqOzy1Z6w18K1ds6APQP+aXI9TNKis+pykn4nJititYuiSseD0VY0F4QnXx+U6k3raoi1CAFE5fe7EuI/KfxuhhQLAbLq90Vm8R94ITBjfSS25mXstXNe9zppTSjDB42ld1TjDovDwXAn5OxiZasIEb5m68sRlxgoQ/2/+ZdYNNINFLAwkCbb8MiCbGASd626Bme0Kx+ropeWdxw== + + + MIIDXjCCAkagAwIBAgIEUk1MbDANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJJUzESMBAGA1UE + CAwJUmV5a2phdmlrMRIwEAYDVQQHDAlSZXlramF2aWsxEDAOBgNVBAoMB0FkdmFuaWExDzANBgNV + BAsMBlNUT1JLMjEXMBUGA1UEAwwOc2FtbC1kZW1vLWNlcnQwHhcNMTMxMDAzMTA1MzEyWhcNMjMx + MDAzMTA1MzEyWjBxMQswCQYDVQQGEwJJUzESMBAGA1UECAwJUmV5a2phdmlrMRIwEAYDVQQHDAlS + ZXlramF2aWsxEDAOBgNVBAoMB0FkdmFuaWExDzANBgNVBAsMBlNUT1JLMjEXMBUGA1UEAwwOc2Ft + bC1kZW1vLWNlcnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkSgTxZkNRXZTKLB0c + 4oz7/8Dh56FX+0cYg7hjw4e8vn+ITXkxzrmUH57FtsvKln4mq1H0FHXL80u3IiWX8qY+QLgNeKeB + m85lXuyOb3wWpKAaQvpLAkejGLCx22AN2L0WZkKZV2puwRQVsRHCq6U6vToJXDZ6Ui6ltKsAl/ZS + 8qUFpiIvqD5ea4ohz4JsFE/uApRc7pbJ4VbOmAAeH/tQTayptq2kPb2vvUVk+2cH5J7UD+GCI88E + e+mS+C33tV9NmWUHL69mYEe8FXjumbKA5e9i1ejn9i0/BLUtHFonHnL9YFMim0foI7NNc5mNg9aw + vm0PuByVU3kuibQkqGBLAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAA9X5B4NBmVuhjECi+KOnRRX + 5oUV+jbYKhGZODDPi+F4Uo7ZtPFQ6sS3tE54+8AoDl5zQ5q5fDDVXhB42IIIjDxHKo8cBXie5FZ6 + mJtErvWZWYWdO0uV2OQAUALq2LieidqSFDJ+Pjl8w1New8oi3migwyE0jZo4Q97lJGDfJTruV0A2 + JE/Gt6QAAcWhhN2hZl92pYkIi5OeqHXyzBUp5vg8LLfNmeyziCAiXDC1Sy/aQU/cllZ3zFJMrqZM + s2xBpmB4sF1YRbIrr2OqEVE6M6DUx+pAQOd2uogV3AMT9D5MYpckI1jx/o/Tto7ju74nIVOskDiN + K0FR8izxcT0HixM= + + + + + 3 + false + false + false + + + + 16 + 18 + + + Sveinbjorn + + + ES/IS/1234567890 + + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml new file mode 100644 index 000000000..d64572829 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestSdoc.xml @@ -0,0 +1,15 @@ +http://S-PEPS.gov.xxX1nUVB6qXdoKbJzNekiSo9ExLdw=ExCPHHC/9OhdhOl1Ou+43Qw1nvskpbMYMu9vqa7m16doxM2PIUmK7LUw7hZiKtjIdBxuhpca3OrjO8O6MuTDN1FksWoj+7B1KTLFtmspucT5O7Cu2OqhK5WIVuCaLuA7CD0N2UfFouRwR5NlLHyzn9Trd7IM5OjA41dGb5jqYl7Ir+62+MgjhZRlLooDzb5fDAczbxv9LHGiKRBpgnk40w3gDAvoSPNdEuKhZi8LPQWWNBvVi3N5ZmJmAIacZWBqePywXTjygmChWAc8p7ptAX6tw0hpBxyxoW3aaZZzWQNcwobTRYbn89fcM11gqIz/YK7VXtiQ7WEQt1enQD/GAA==MIIDIjCCAgqgAwIBAgIES6idsjANBgkqhkiG9w0BAQUFADBTMQswCQYDVQQGEwJFUzEOMAwGA1UE +CAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExEzARBgNVBAMMCmxvY2Fs +LWRlbW8wHhcNMTMwODI4MTY0NzM1WhcNMTUwODI4MTY0NzM1WjBTMQswCQYDVQQGEwJFUzEOMAwG +A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExEzARBgNVBAMMCmxv +Y2FsLWRlbW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx+7zEQUbt8Ot9dByR5TuY +NPmTwaKhECtnkxYAx9tl+Ga3kFiv+dOSeDoQOhxkICG1ZMaG0Gtk0EQWjscC1cLwDXpAOdhOm5xh +ndFHxa3V3Y3zomFZA7A3nwP8wt17wDrc1xi2Ye8VrwO7Vjb/F8Rgutlcrvq+LF4g9nQLoRiKUq8w +NFvDlvhBbLr8hMVBMY/jY7tSQ85qLqKUkWRcoDttJjgWZoO1vpBS4m+FywtYdOoHnN6fv4Dvf1r2 +rNLgebgBvSfwznxiulwW6FBLasYX0rYKP7RfwG8TJ+FumOgAjADj2LdwK25RZNg44XU2V1z1Fp37 +fNXhfo08LpdD1ueFAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBADMRGTWOmadZyCoJNluV+M7LopjC +9WpFUj76X0cAoNXmt12zYqYe8hjRmBr6l2V/FXT3/TyWET1nILG46zwwAxslw3b2LvkhU+9QcuB8 +yC8TCJJ0kgsTZ/EUZPSbwUG7Nn2jkMiyjlyKcjSCQOzEKQyR1xYwyZG40+BPeGbYjmRgm6kcmCxY +USWoPwNyfke9gNT80f0pUj7wJ9YwWbTIz1rhf/h7rxoMYypXo+JXwaXW/Ra8v1uDcwfKpE5ZgwAU +nubLXF4A+H7/N7ZvB5XDwJ4W+99nuPsKfwacD8m1sflTXcEPzzhOq6iQ9anJT94/pMctnp827zXA +y66jvDrin5I=3ISfalsefalsefalseIS/IS/fbea6e68-0393-401b-b616-f767fff9418c \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml new file mode 100644 index 000000000..becc689fe --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryRequestTagDelete.xml @@ -0,0 +1,66 @@ + + + http://S-PEPS.gov.xx + + hhQXDKNrJJ3Yy/pkZNZF4GlWrA/Xsx4CH9chgVa5HK4qZQvFXvZwegdw6U7rm7qv0zmI4xaLTv/bpmqJzEPfY3sIvrDRu9EouEKwtjbMbcvVQsx7I+j0yy7/cBcQJe3lRwQwyvazfYVbnSeGFxBN6WOHPqv6uInaQO/hXkicT3tBtm8o3UgUDY6c8wIMuD5A0hWTkL6z6f893AbdN85OQYAdHItNsQWeLOIeiGC918X7qqTfhFtBAB2oGVjlsSEqWox1jNqrPl1jjA0dP76m5SIVSqF8XcDR306ZB9GLJywOHKba0lxGLsXOAzJ+8u9jeixJ6VZKFqZg2Fhl/saKbg== + + + MIIDJzCCAg8CBEuonbIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMCRVMxDjAMBgNVBAgMBVNw + YWluMQ8wDQYDVQQHDAZNYWRyaWQxDjAMBgNVBAoMBUluZHJhMRgwFgYDVQQDDA9sb2NhbC1kZW1v + LWNlcnQwHhcNMTAwMzIzMTA1MzM4WhcNMTAwNjAxMTA1MzM4WjBYMQswCQYDVQQGEwJFUzEOMAwG + A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExGDAWBgNVBAMMD2xv + Y2FsLWRlbW8tY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfdQ1/mkM9sqqab + ri8qqqX4s0J6UEEXyF+0AjLU8RC4WMeYFSZ5tfwnyLsoXY0/9bZLXnBxSibQYaf4SnpZJhlVA4sU + 0d8qyEWA2OvXGDCm7uspGHG3CRQa7fpHsmHmfIAqho9XDlwpwJdx5gK4Edc6aArcMQfjqMhy1s1n + 6Of1i1lMGGsGrERIRY7biIQu/8nITbHH18sUAZMG1u/Q0Avi9O3LWyswHXUouZ818fWwG6xru2N5 + y6vtVO/SL3doRSdqYkEms93TgxTtaKg8XNe24zhNTte6nvWLaKesi2KzZGC57HU47HBFEs8NWk7z + 9BDf8uLyPz9VDahwVKzMto8CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAgpuReXQ7Dsfdoe5zzy2F + 6kn1qqtMkRGsBPKnDFCI/GkIZpBiqlfwdh6sipnFKWfKEDlPKN1kEhbkDR2GA1Cp4F4ZSL/HumZM + pWabRhDxhTPvHIFbbShPDJY93+jw/yQeaWgMuhw3WzdH9TrVoRZH0Q7sG1pIJo5/6IogIZwFvJHT + /NDutKmurU6Lw8Vnde8PfnQd+FTEhz0SEGyKkWjAuhGbJfseBy/z3L+MJq1rdSQ9PF7wXDvWNzJq + yaNBUWWBV1TskvkNZXcaguroVPy2XhA1aixlAajWEXLk6Uuj5UYqalrV/reNYvDvY0BV2CIn51r7 + Ppm8IFVTk8mYfX8/jw== + + + + + 3 + false + false + false + + + + 16 + 18 + + + Sveinbjörn + + + ES/IS/1234567890 + + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml new file mode 100644 index 000000000..7ea486812 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AttrQueryResponse.xml @@ -0,0 +1,124 @@ + + + http://C-PEPS.gov.xx + + + + + + + + + + + + + yMOVS1T/yRiVh3L6IBM9rR9Ie3w= + + + d8e/RyNNPmnHRIzTIuRSnW6B60oWGBGxjRua/HvNxTuod0qSarYJxEedhY9Wl1Z9WYXlry28FuKjp3DA3HhzNaVd7A7QpFqNC4dnizSVWFjxlhmoE/Uv3Y/ha9P/fk6nbtHCSKW4kHSX7QfFLeggcLmUG0IULRF8UmRdQ0WerCl0aSZZeSp8J3LsFBPeWCRSwXgfiLn+RehggzZmQU6g0ssxrpnsYEAtjAiOli+YVQGuumsZGaJ8zHA/DgJ2FTGovNUyfuSUFLhd9nLlSqFs2Avnx0Ck7Q1dxDO5truOm6e285YLHqLaGdetFyPQAj/Z4w4RJ5u5X6d7rhBjTfRAAw== + + + MIIDJzCCAg8CBEuonbIwDQYJKoZIhvcNAQEFBQAwWDELMAkGA1UEBhMCRVMxDjAMBgNVBAgMBVNw + YWluMQ8wDQYDVQQHDAZNYWRyaWQxDjAMBgNVBAoMBUluZHJhMRgwFgYDVQQDDA9sb2NhbC1kZW1v + LWNlcnQwHhcNMTAwMzIzMTA1MzM4WhcNMTAwNjAxMTA1MzM4WjBYMQswCQYDVQQGEwJFUzEOMAwG + A1UECAwFU3BhaW4xDzANBgNVBAcMBk1hZHJpZDEOMAwGA1UECgwFSW5kcmExGDAWBgNVBAMMD2xv + Y2FsLWRlbW8tY2VydDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJfdQ1/mkM9sqqab + ri8qqqX4s0J6UEEXyF+0AjLU8RC4WMeYFSZ5tfwnyLsoXY0/9bZLXnBxSibQYaf4SnpZJhlVA4sU + 0d8qyEWA2OvXGDCm7uspGHG3CRQa7fpHsmHmfIAqho9XDlwpwJdx5gK4Edc6aArcMQfjqMhy1s1n + 6Of1i1lMGGsGrERIRY7biIQu/8nITbHH18sUAZMG1u/Q0Avi9O3LWyswHXUouZ818fWwG6xru2N5 + y6vtVO/SL3doRSdqYkEms93TgxTtaKg8XNe24zhNTte6nvWLaKesi2KzZGC57HU47HBFEs8NWk7z + 9BDf8uLyPz9VDahwVKzMto8CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAgpuReXQ7Dsfdoe5zzy2F + 6kn1qqtMkRGsBPKnDFCI/GkIZpBiqlfwdh6sipnFKWfKEDlPKN1kEhbkDR2GA1Cp4F4ZSL/HumZM + pWabRhDxhTPvHIFbbShPDJY93+jw/yQeaWgMuhw3WzdH9TrVoRZH0Q7sG1pIJo5/6IogIZwFvJHT + /NDutKmurU6Lw8Vnde8PfnQd+FTEhz0SEGyKkWjAuhGbJfseBy/z3L+MJq1rdSQ9PF7wXDvWNzJq + yaNBUWWBV1TskvkNZXcaguroVPy2XhA1aixlAajWEXLk6Uuj5UYqalrV/reNYvDvY0BV2CIn51r7 + Ppm8IFVTk8mYfX8/jw== + + + + + + urn:oasis:names:tc:SAML:2.0:status:Success + + + http://C-PEPS.gov.xx + + urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified + + + + + + + http://S-PEPS.gov.xx + + + + + + + + + + + + 16/12/2008 + + + + 105 + IS + 10 + Gudrunartun + Reykjavik + + + + + value3 + value4 + value1 + value2 + + + + 16 + 18 + + + 123456789IS + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml new file mode 100644 index 000000000..c48bfde95 --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequest.xml @@ -0,0 +1,72 @@ + + + http://S-PEPS.gov.xx + + + + + + + + + + + + + yzsqaxBNicOrixBUno5cL0CBOpE= + + + + Xycll1PF7hh3Xdykpr6nIr8Q6PQ6OxLIBBBugoGpAm/V4Hu7tKakHJp8TgtRWZ30jG5eolOXnJkC + wiaTVUFaQz7cNn27syRJkdA+eYlz9doiwUJ5eD1cAyddZYsNPpSeAj5UK45oN0qCH+/pI9mRw8Oi + YIN/BUEtXkoYTjPtkmA= + + + + MIIBmDCCAQECBEuWisIwDQYJKoZIhvcNAQEFBQAwEzERMA8GA1UEAxMIY291bnRyeTEwHhcNMTAw + MzA5MTc1MjAyWhcNMTAwNjA3MTc1MjAyWjATMREwDwYDVQQDEwhjb3VudHJ5MTCBnzANBgkqhkiG + 9w0BAQEFAAOBjQAwgYkCgYEAnb2gcchwxvJBclcsfCBWJnYefLJYQnDGCQ3RUtYZc26JznnLXclu + h1XfLJlWgYk/pFKz7B9KfJztal47c6mBfisnxjhdcLqcbXOuRIm7E8TZPzdbHEd60WHPDv20jr+r + /WkOQs12tKQMbgDX2wtBBcJODLYCDiYa1oQsnyhdOGkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBk + 3luVRc0EqEE1zZeYvRPi5a2yOZfI9H+/rXI1qNLwmICnuJX++ukUbqJHm/FV1iSPM9O9oqzifJ/K + eKL5EcUugJ76Tu5XO8za2FoJvYr+jIZDsEkCg+OSzcp/eljiWAIh2enZcQ/ON6QxWXeSNJPH0xOq + KAoZgbUK0Zld3Dsheg== + + + + + 3 + EDU001 + OXF001 + APP001 + EN + true + true + true + + + 16 + 18 + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml new file mode 100644 index 000000000..8766f9a8b --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDelete.xml @@ -0,0 +1,47 @@ + + + http://S-PEPS.gov.xx + + + S6nY97RSCUJXq3HZ5obSLCI341LvtAA3vHjR1FWxrIMDPACQMqlNWBYNnRP1RiZiJV6x0RieH+SR + Vkiy03jYyhr0XkwAE5Wd6Huf+zIbeTXjZkdQj7JpAXoB+ky4G/+L0deamvsP3eO7ZJ4grady4gmC + Xt8p8tK3EoMocZse2hw= + + + + MIIBkTCB+wIESpT8bTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVzdG9yazAeFw0wOTA4MjYw + OTEyMTNaFw0wOTExMjQwOTEyMTNaMBAxDjAMBgNVBAMTBXN0b3JrMIGfMA0GCSqGSIb3DQEBAQUA + A4GNADCBiQKBgQDK/QL8NuMd41I1lObObeRA6DaM8bjeYqIz5mg5WnnZv4jlcK7Gq89Lk6htXRFl + lAXpDYhI3zolMIMHEMZ3zQQPc7lgTV6Bbz9uD2YTJ9Kx55e8Y6Y49DO+TiiejGJxTzTFUcuBJHaK + ipuvLVd1a8N3RAnaGSUOozhrTqxba82mEwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFJgeS18nhUl + r7WnvSn9FlkI94U//Hk3iZLc3/cScTu7D7Y/J0eUq4TF8PsSzWX5khGuqrTkswNgfEtl2IpACQ2w + kB8+RxeRNdddQlGHlO4ZqnpvxXBwSouiy2yUeAo0y++vMFm6DO4sxfk8eTtimPDo5SzBtjtGtbqS + 3cyl/wz8 + + + + + 3 + false + false + false + + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml new file mode 100644 index 000000000..1b1e1646c --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/data/eu/stork/STORKSAMLEngine/AuthnRequestTagDeleteEncoded.xml @@ -0,0 +1,47 @@ + + + http://S-PEPS.gov.xx + + + S6nY97RSCUJXq3HZ5obSLCI341LvtAA3vHjR1FWxrIMDPACQMqlNWBYNnRP1RiZiJV6x0RieH+SR + Vkiy03jYyhr0XkwAE5Wd6Huf+zIbeTXjZkdQj7JpAXoB+ky4G/+L0deamvsP3eO7ZJ4grady4gmC + Xt8p8tK3EoMocZse2hw= + + + + MIIBkTCB+wIESpT8bTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVzdG9yazAeFw0wOTA4MjYw + OTEyMTNaFw0wOTExMjQwOTEyMTNaMBAxDjAMBgNVBAMTBXN0b3JrMIGfMA0GCSqGSIb3DQEBAQUA + A4GNADCBiQKBgQDK/QL8NuMd41I1lObObeRA6DaM8bjeYqIz5mg5WnnZv4jlcK7Gq89Lk6htXRFl + lAXpDYhI3zolMIMHEMZ3zQQPc7lgTV6Bbz9uD2YTJ9Kx55e8Y6Y49DO+TiiejGJxTzTFUcuBJHaK + ipuvLVd1a8N3RAnaGSUOozhrTqxba82mEwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFJgeS18nhUl + r7WnvSn9FlkI94U//Hk3iZLc3/cScTu7D7Y/J0eUq4TF8PsSzWX5khGuqrTkswNgfEtl2IpACQ2w + kB8+RxeRNdddQlGHlO4ZqnpvxXBwSouiy2yUeAo0y++vMFm6DO4sxfk8eTtimPDo5SzBtjtGtbqS + 3cyl/wz8 + + + + + 3 + false + false + false + + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/logback-test.xml b/id/server/stork2-saml-engine/src/test/resources/logback-test.xml new file mode 100644 index 000000000..99d7d353a --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/logback-test.xml @@ -0,0 +1,21 @@ + + + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/id/server/stork2-saml-engine/src/test/resources/p11Conf.cfg b/id/server/stork2-saml-engine/src/test/resources/p11Conf.cfg new file mode 100644 index 000000000..bd9f357ce --- /dev/null +++ b/id/server/stork2-saml-engine/src/test/resources/p11Conf.cfg @@ -0,0 +1,24 @@ +//ATTRIBUTE VALUE +//name name suffix of this provider instance +//library pathname of PKCS#11 implementation +//slotListIndex slot index + +//PREFIX DESCRIPTION +//CKO_ Object class +//CKA_ Attribute +//CKK_ Key type + +//attributes(operation, keytype, keyalgorithm) = { +// name1 = value1 +// [...] +//} + +name=nameProvider +library=library.dll +slotListIndex=0 +attributes(*,CKO_PUBLIC_KEY,CKK_RSA)={ + CKA_VERIFY=true +} +attributes(*,CKO_PRIVATE_KEY,CKK_RSA)={ + CKA_SIGN=true +} \ No newline at end of file diff --git a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar b/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar deleted file mode 100644 index 4332a474d..000000000 Binary files a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.jar and /dev/null differ diff --git a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom b/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom deleted file mode 100644 index b658a8e12..000000000 --- a/repository/eu/stork/Commons/1.2.0/Commons-1.2.0.pom +++ /dev/null @@ -1,222 +0,0 @@ - - 4.0.0 - eu.stork - Commons - jar - Stork Commons - - UTF-8 - 1.2.0 - 2.6.0 - - ${stork.version} - - The STORKCommons library provides beans, Java Interfaces and utility classes to integrate PEPS and SAML Engine. - - - - - - shibboleth.internet2.edu - Internet2 - https://build.shibboleth.net/nexus/content/groups/public/ - - - - - - - - joda-time - joda-time - 2.3 - - - - - log4j - log4j - 1.2.17 - - - javax.jms - jms - - - com.sun.jdmk - jmxtools - - - com.sun.jmx - jmxri - - - mail - javax.mail - - - - - - org.opensaml - opensaml - ${opensaml.version} - - - org.slf4j - slf4j-api - - - org.slf4j - slf4j-simple - - - org.slf4j - jcl-over-slf4j - - - org.slf4j - log4j-over-slf4j - - - org.slf4j - jul-to-slf4j - - - - - - - org.bouncycastle - bcprov-jdk16 - 1.46 - - - - - - javax.servlet - servlet-api - 2.5 - provided - - - - commons-lang - commons-lang - 2.6 - jar - compile - - - junit - junit - 4.11 - test - - - - - commons - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - 1.6 - 1.6 - - - - org.apache.maven.plugins - maven-surefire-plugin - - reversealphabetical - false - - reversealphabetical - **/PEPSUtilTest.java - **/PersonalAttributeTestCase.java - **/PersonalAttributeListTestCase.java - **/DateUtilTestCase.java - **/AttributeUtilTest.java - - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.9.1 - - - http://commons.apache.org/lang/api/ - http://java.sun.com/j2se/1.6.0/docs/api/ - http://www.bouncycastle.org/docs/docs1.6/ - http://docs.oracle.com/javase/6/docs/api/ - - - - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - verify - - jar-no-fork - - - - - - - - src/test/resources - - log4j.xml - - - - - - - embedded - - - - ${project.basedir}/src/main/resources - - - ${project.basedir}/src/main/config/embedded - - - - - - metrics - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.5.1 - - - html - xml - - - - - - - - -- cgit v1.2.3