From e14ef2cb47f5e771171c4c9265c2c336f071cbfa Mon Sep 17 00:00:00 2001 From: Thomas Lenz Date: Wed, 5 Aug 2015 14:38:58 +0200 Subject: some updates --- .../cxf/interceptors/RawMessageInterceptor.java | 47 ++ .../wsdl/ERsB/1.3/14-05 ERsB Webservices v1.3.pdf | Bin 0 -> 765166 bytes src/main/resources/wsdl/ERsB/1.3/ErsbService.wsdl | 144 ++++++ ...example_SucheUnternehmenNachId_ERsB_Request.xml | 38 ++ ...xample_SucheUnternehmenNachId_ERsB_Response.xml | 153 ++++++ .../wsdl/ERsB/1.3/examples/example_aend_adr.xml | 47 ++ .../ERsB/1.3/examples/example_aend_best_zr.xml | 26 ++ .../wsdl/ERsB/1.3/examples/example_aend_bnw.xml | 20 + .../wsdl/ERsB/1.3/examples/example_aend_bzrbeg.xml | 27 ++ .../wsdl/ERsB/1.3/examples/example_aend_bzrend.xml | 27 ++ .../wsdl/ERsB/1.3/examples/example_aend_evb.xml | 29 ++ .../ERsB/1.3/examples/example_aend_fktregel.xml | 44 ++ .../ERsB/1.3/examples/example_aend_pers_rt.xml | 50 ++ .../ERsB/1.3/examples/example_aend_persadr.xml | 54 +++ .../ERsB/1.3/examples/example_aend_persdata.xml | 47 ++ .../wsdl/ERsB/1.3/examples/example_aend_person.xml | 52 +++ .../wsdl/ERsB/1.3/examples/example_aend_pfunkt.xml | 35 ++ .../ERsB/1.3/examples/example_aend_rechtsform.xml | 24 + .../ERsB/1.3/examples/example_aend_untname.xml | 23 + .../ERsB/1.3/examples/example_aend_vertretung.xml | 20 + .../wsdl/ERsB/1.3/examples/example_neuanlage.xml | 93 ++++ .../1.3/examples/example_neuanlage_response.xml | 123 +++++ .../wsdl/ERsB/1.3/schema/PersonData_Ersb.xsd | 466 +++++++++++++++++++ .../wsdl/ERsB/1.3/schema/PersonData_URSuche.xsd | 511 +++++++++++++++++++++ .../resources/wsdl/ERsB/1.3/schema/ersb-types.xsd | 62 +++ .../wsdl/ERsB/1.3/schema/specific/CustomFault.xsd | 18 + .../wsdl/ERsB/1.3/schema/ur-basicTypes.xsd | 309 +++++++++++++ .../wsdl/ERsB/1.3/schema/ur-basicTypesErsb.xsd | 133 ++++++ .../wsdl/ERsB/1.3/schema/ur-simpleTypes.xsd | 443 ++++++++++++++++++ src/test/java/at/gv/util/demo/Clienttests.java | 392 ++++++++++++++++ 30 files changed, 3457 insertions(+) create mode 100644 src/main/java/at/gv/util/cxf/interceptors/RawMessageInterceptor.java create mode 100644 src/main/resources/wsdl/ERsB/1.3/14-05 ERsB Webservices v1.3.pdf create mode 100644 src/main/resources/wsdl/ERsB/1.3/ErsbService.wsdl create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Request.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Response.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_adr.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_best_zr.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bnw.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrbeg.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrend.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_evb.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_fktregel.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pers_rt.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persadr.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persdata.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_person.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pfunkt.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_rechtsform.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_untname.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_aend_vertretung.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage_response.xml create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/PersonData_Ersb.xsd create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/PersonData_URSuche.xsd create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/ersb-types.xsd create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/specific/CustomFault.xsd create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypes.xsd create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypesErsb.xsd create mode 100644 src/main/resources/wsdl/ERsB/1.3/schema/ur-simpleTypes.xsd create mode 100644 src/test/java/at/gv/util/demo/Clienttests.java diff --git a/src/main/java/at/gv/util/cxf/interceptors/RawMessageInterceptor.java b/src/main/java/at/gv/util/cxf/interceptors/RawMessageInterceptor.java new file mode 100644 index 0000000..70852b0 --- /dev/null +++ b/src/main/java/at/gv/util/cxf/interceptors/RawMessageInterceptor.java @@ -0,0 +1,47 @@ +//package at.gv.util.cxf.interceptors; +// +//import java.io.IOException; +// +//import org.apache.cxf.binding.soap.interceptor.SoapPreProtocolOutInterceptor; +//import org.apache.cxf.io.CachedOutputStream; +//import org.apache.cxf.message.Message; +//import org.apache.cxf.phase.AbstractPhaseInterceptor; +//import org.apache.cxf.phase.Phase; +//import org.apache.log4j.Logger; +// +//public abstract class RawMessageInterceptor extends AbstractPhaseInterceptor { +// +// public RawMessageInterceptor() { +// super(Phase.PRE_STREAM); +// addBefore(SoapPreProtocolOutInterceptor.class.getName()); +// } +// +// protected abstract Logger getLogger(); +// +// protected abstract String changeOutboundMessage(String currentEnvelope); +// +// protected abstract String changeInboundMessage(String currentEnvelope); +// +// public void handleMessage(Message message) { +// +// } +// +// public void handleFault(Message message) { +// } +// +// private class CachedStream extends CachedOutputStream { +// public CachedStream() { +// super(); +// } +// +// protected void doFlush() throws IOException { +// currentStream.flush(); +// } +// +// protected void doClose() throws IOException { +// } +// +// protected void onWrite() throws IOException { +// } +// } +//} diff --git a/src/main/resources/wsdl/ERsB/1.3/14-05 ERsB Webservices v1.3.pdf b/src/main/resources/wsdl/ERsB/1.3/14-05 ERsB Webservices v1.3.pdf new file mode 100644 index 0000000..ec6ed28 Binary files /dev/null and b/src/main/resources/wsdl/ERsB/1.3/14-05 ERsB Webservices v1.3.pdf differ diff --git a/src/main/resources/wsdl/ERsB/1.3/ErsbService.wsdl b/src/main/resources/wsdl/ERsB/1.3/ErsbService.wsdl new file mode 100644 index 0000000..352ea01 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/ErsbService.wsdl @@ -0,0 +1,144 @@ + + + + + Versionsnummer + + Identifikationsnummer eines Quellregisters + + Status des Vollzugsobjektes + + Im Ergebnis berücksichtigte Status des Vollzugsobjektes + + UR Kennziffer eines Unternehmens + + Firmenbuchnummer + + Vereinsregisternummer + + Ordnungsnummer aus dem ERsB + + Bezeichnung eines Unternehmens + + unverschlüsseltes bPK + + verschlüsseltes bPK (base64 codiert) + + Rechtsformcode eines Unternehmens + + Langtext der Rechtsform eines Unternehmens + + Art eines externen Schlüssels + + Wert eines externen Schlüssels + + Jahr des Ö–NACE-Systems + + Ö–NACE - Branchenkennzahl + + Art der Ö–NACE (Haupt-/Nebentätigkeit) + + Rechtstatsachen-Nummer + + Rechtstatsachen-Code + + Strassenname + + Hausnummer + + Postleitzahl + + Ortsname + + Gemeindekennziffer + + Landescode gem. ISO 3166 ALPHA-3 + + AdressTyp + + Nachname der vertretungsbefugten Person + + Vorname der vertretungsbefugten Person + + Titel der vertretungsbefugten Person + + Funktionscode der vertretungsbefugten Person + + Funktionsbezeichnung der vertretungsbefugten Person + + Funktionsregeltext für vertretungsbefugte Person + + Art der Vertretungsbefugnis + + Einzelvertretungsbefugnis + + + This version of person deploys only global elements. + All types derived from abstract types have been replaced by + substitution groupsAbstraktes PersonenDaten Element, nur auf englisch + verfügbar, nicht direkt benützen sondern PersonenDaten benutzen + Signierte PersonendatenstrukturAbstraktes Personen Element, nur auf englisch + verfügbar, nicht direkt benützen sondern NatuerlichePerson o. + NichtNatuerlichePerson benutzenNatuerliche Person entspricht PhysicalPerson, ist + eine Ableitung von Person (abstract)NichtNatuerlichePerson entspricht CorporatzeBody, + ist Ableitung von Person (abstract)Container für diverse Namensbestandteile, + entspricht Name in der englischen VersionAbstraktes Address Element, nur auf Englisch + verfügbar, nicht direkt benützen sondern PostAdresse, + InternetAdresse, etc benutzenPost oder ZMR Adresse, entspricht PostalAddress, + ist Ableitung von Address (abstract)Typisierte Post oder ZMRAdresse, entspricht + TypedPostalAddress, ist Ableitung von Address (abstract) + Geburtsdatum, entspricht DateOfBirth + Container um eine Person und ihre Adressen zu + speichernContainer um eine Person und ihre Adressen zu + speichernContainer für beliebige Identifikationsmerkmale, + besteht aus Type und Value Unterelementen, aus technischen Gründen + nur auf Englisch verfügbaractual value of the identifier. + type of value (eg 'ZMR', 'SV-Nummer', + 'Martrikelnummer', database identification, ...) + main structure of person dataunique identification entitiesentspricht PhysicalPersonTypeentspricht CorporateBodyTypename of corporate body (whole name) + type of company (eg AG, OHG, ...) + entspricht NameTypeStruktur des Abstrakten Address Elements + entspricht TypedPostalAddressType + entspricht PostalAddressTypeStaatencode, ISO Code oder internationaler Post + code, entspricht CountryCodeentspricht PostalCodeentspricht MunicipalityZustelladresse oder ZMRAdresse, entspricht + DeliveryAddressBei Ortschaften ohne Straßenname steht hier + Ortschaftsname, entspricht StreetNameHausnummer oder Konskriptionsnummer, z.B. + 10, 124a, 78-80. Entpricht BuildingNumberAddressregister database keys used to identify Addresseseinfacher Datentyp für Daten (union): Tag und/oder + Monta können ausgelassen werden, entspricht DayOfBirthType + + This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groupsAbstraktes PersonenDaten Element, nur auf englisch verfügbar, nicht direkt benützen sondern PersonenDaten benutzenSignierte PersonendatenstrukturAbstraktes Personen Element, nur auf englisch verfügbar, nicht direkt benützen sondern NatuerlichePerson o. NichtNatuerlichePerson benutzenNatuerliche Person entspricht PhysicalPerson, ist eine Ableitung von Person (abstract)NichtNatuerlichePerson entspricht CorporatzeBody, ist Ableitung von Person (abstract)Container für diverse Namensbestandteile, entspricht Name in der englischen VersionAbstraktes Address Element, nur auf Englisch verfügbar, nicht direkt benützen sondern PostAdresse, InternetAdresse, etc benutzenPost oder ZMR Adresse, entspricht PostalAddress, ist Ableitung von Address (abstract)Typisierte Post oder ZMRAdresse, entspricht TypedPostalAddress, ist Ableitung von Address (abstract) Geburtsdatum, entspricht DateOfBirthContainer um eine Person und ihre Adressen zu speichernContainer um eine Person und ihre Adressen zu speichernContainer für beliebige Identifikationsmerkmale, besteht aus Type und Value Unterelementen, aus technischen Gründen nur auf Englisch verfügbaractual value of the identifier.type of value (eg 'ZMR', 'SV-Nummer', 'Martrikelnummer', database identification, ...)main structure of person dataunique identification entitiesentspricht PhysicalPersonTypeentspricht CorporateBodyTypename of corporate body (whole name)type of company (eg AG, OHG, ...)entspricht NameTypeStruktur des Abstrakten Address Elementsentspricht TypedPostalAddressTypeentspricht PostalAddressTypeStaatencode, ISO Code oder internationaler Post code, entspricht CountryCodeentspricht PostalCodeentspricht MunicipalityZustelladresse oder ZMRAdresse, entspricht DeliveryAddressBei Ortschaften ohne Straßenname steht hier Ortschaftsname, entspricht StreetNameHausnummer oder Konskriptionsnummer, z.B. 10, 124a, 78-80. Entpricht BuildingNumberGebäudeteil oder eigneens Gbäude, z.B. Stiege, Werkstatt, ..... Entspricht UnitTuernummer oder andere naehere Beschreibung der Adresse (z.B. 4. Stock rechts). Entspricht DoorNumberzmr use onlyAddressregister database keys used to identify Addresseseinfacher Datentyp für Daten (union): Tag und/oder Monta können ausgelassen werden, entspricht DayOfBirthType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Request.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Request.xml new file mode 100644 index 0000000..878f058 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Request.xml @@ -0,0 +1,38 @@ + + + + + + + + beispiel.user@portal.statistik.gv.at + + + + + + + + + + + 96c7ec50-275a-4e9d-86c6-84a710825a77 + + + true + + + + + V3.0 + 9110001021537 + false + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Response.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Response.xml new file mode 100644 index 0000000..ce13390 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_SucheUnternehmenNachId_ERsB_Response.xml @@ -0,0 +1,153 @@ + + + + + 96c7ec50-275a-4e9d-86c6-84a710825a77 + + 1 + 1 + + + + + + + 9110001021537 + ERJ + Ordnungsnummer aus dem ERsB + 2012-08-20+02:00 + + + R011S390Q + KUR + Kennziffer des Unternehmensregisters + 2012-08-20+02:00 + + + 9110001021537 + SEK + Sekundär ID + 2012-10-03+02:00 + + + 0002074662 + SID + Subjektidentifikationsnummer + 2012-08-20+02:00 + + Maxima Musterfrau + 1 + + Maxima Musterfrau + + + 1 + Einzelunternehmen + 101 + Einzelunternehmen + + + + + AUT + 1220 + Wien + 90001 + Wien + + Prandaugasse + 10/2 + + + SITZ + + + + 2010-06-12 + + Vertrag vom 11.10.2007 + Jedes vertretungsbefugte Organ vertritt selbständig + + 001 + 0999 + Rechtstatsachentext zum Unternehmen + + + 0210 + Forstwirtschaft + 2012-08-20+02:00 + + + + + A + PNR + Personennummer + + + Maxima + Musterfrau + Mag.Dr. + + 1950-08-01 + + + + AUT + 1050 + Wien + 90001 + Wien + + Brandmayergasse + 2/10 + + + ZUSTELLADRESSE + + + J + + 101 + Inhaber + + 2010-06-12 + 2999-12-31 + Vertritt seit 18.12.2010 selbständig + + + 001 + 0999 + Rechtstatsachentext zur Funktion + + + + 001 + 0999 + Rechtstatsachentext zur Person + + + + + 2012-06-01+01:00 + 2012-06-01+01:00 + + + 2012-06-15+01:00 + 2012-06-15+01:00 + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_adr.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_adr.xml new file mode 100644 index 0000000..48f785d --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_adr.xml @@ -0,0 +1,47 @@ + + + + + + + 9110001021537 + ERJ + + + + + AUT + 1220 + Wien + 90001 + Wien + + Prandaugasse + 10/2 + + + SITZ + + + + AUT + 1050 + Wien + 90001 + Wien + + Brandmayergasse + 2/10 + + + SITZ + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_best_zr.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_best_zr.xml new file mode 100644 index 0000000..8ea350c --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_best_zr.xml @@ -0,0 +1,26 @@ + + + + + + 9110001021537 + ERJ + + + + + 2011-01-01 + 2999-12-31 + + + 2011-01-02 + 2999-12-31 + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bnw.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bnw.xml new file mode 100644 index 0000000..b16364b --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bnw.xml @@ -0,0 +1,20 @@ + + + + + + 9110001021537 + ERJ + + + + alter Bestandsnachweis + neuer Bestandsnachweis + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrbeg.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrbeg.xml new file mode 100644 index 0000000..04fcf82 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrbeg.xml @@ -0,0 +1,27 @@ + + + + + + + 9110001021537 + ERJ + + + + + 2013-01-24 + 2999-12-31 + + + 2012-01-01 + 2999-12-31 + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrend.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrend.xml new file mode 100644 index 0000000..0170530 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_bzrend.xml @@ -0,0 +1,27 @@ + + + + + + + 9110001021537 + ERJ + + + + + 1998-01-24 + 2999-12-31 + + + 1998-01-24 + 2013-10-31 + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_evb.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_evb.xml new file mode 100644 index 0000000..5276e21 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_evb.xml @@ -0,0 +1,29 @@ + + + + + + 9110001021537 + ERJ + + + + + + + B + PNR + + + + N + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_fktregel.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_fktregel.xml new file mode 100644 index 0000000..d782c1e --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_fktregel.xml @@ -0,0 +1,44 @@ + + + + + + 9110001021537 + ERJ + + + + + + + B + PNR + + + + + 101 + + 2010-06-12 + 2999-12-31 + vertritt seit 18.12.2010 selbständig + + + + 101 + + 2010-06-12 + 2999-12-31 + vertritt seit 07.12.2011 gemeinsam mit einem Prokurist + + + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pers_rt.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pers_rt.xml new file mode 100644 index 0000000..dfbd9ac --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pers_rt.xml @@ -0,0 +1,50 @@ + + + + + + 9110001021537 + ERJ + + + + + 004 + 0815 + Rechtstatsachentext zum Unternehmen + + + + + B + PNR + + + + + 107 + + 003 + 0815 + Rechtstatsachentext zur Personfunktion + + + + 002 + 0999 + Rechtstatsachentext zur Person + + + 0999 + Neue Rechtstatsachentext zur Person + + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persadr.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persadr.xml new file mode 100644 index 0000000..e574609 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persadr.xml @@ -0,0 +1,54 @@ + + + + + + 9110001021537 + ERJ + + + + + + + B + PNR + + + + + AUT + 1220 + Wien + 90001 + Wien + + Prandaugasse + 10/2 + + + ZUSTELLADRESSE + + + + AUT + 1050 + Wien + 90001 + Wien + + Brandmayergasse + 2/10 + + + ZUSTELLADRESSE + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persdata.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persdata.xml new file mode 100644 index 0000000..41ca683 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_persdata.xml @@ -0,0 +1,47 @@ + + + + + + + 9110001021537 + ERJ + + + + + + + B + PNR + + + Max + Mustermann + MSc + + 1950-08-01 + + + + + + B + PNR + + + Max + Mustermann + Mag.Dr. + + 1950-08-01 + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_person.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_person.xml new file mode 100644 index 0000000..9df7b29 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_person.xml @@ -0,0 +1,52 @@ + + + + + + 9110001021537 + ERJ + + + + + + + Maxima + Musterfrau + Mag.Dr. + + 1950-08-01 + + + + AUT + 1050 + Wien + 90001 + Wien + + Brandmayergasse + 2/10 + + + ZUSTELLADRESSE + + + + 101 + + 2010-06-12 + 2999-12-31 + vertritt seit 07.12.2011 gemeinsam mit einem Prokurist + + + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pfunkt.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pfunkt.xml new file mode 100644 index 0000000..f54b499 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_pfunkt.xml @@ -0,0 +1,35 @@ + + + + + + 9110001021537 + ERJ + + + + + + + B + PNR + + + + + 109 + + + 121 + + + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_rechtsform.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_rechtsform.xml new file mode 100644 index 0000000..dabc1d7 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_rechtsform.xml @@ -0,0 +1,24 @@ + + + + + + + 9110001021537 + ERJ + + + 101 + + + 102 + Text für ausl. RF + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_untname.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_untname.xml new file mode 100644 index 0000000..208c5d8 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_untname.xml @@ -0,0 +1,23 @@ + + + + + + + 9110001021537 + ERJ + + + Max Mustermann + + + Max Mustermann & Erben + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_vertretung.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_vertretung.xml new file mode 100644 index 0000000..6a34ed4 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_aend_vertretung.xml @@ -0,0 +1,20 @@ + + + + + + 9110001021537 + ERJ + + + + alter VText + neuer Vtext + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage.xml new file mode 100644 index 0000000..2681624 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage.xml @@ -0,0 +1,93 @@ + + + + + + + Maximilian Mustermann + + + 101 + + + + + AUT + 1220 + Wien + 90001 + Wien + + Prandaugasse + 10/2 + + + SITZ + + + + 2010-06-12 + + Text für Bestandsnachweis + Vertretungsregelung für das Unternehmen + + 0999 + Rechtstatsachentext zum Unternehmen + + + + + spwAeUM/n8okpsROzLSxNUn/U6Sr+/evE9rs0xI7WsRO79d + Sf4OBRS/q3LTt2GKrptB5ZfY/T137l8MuglMw3GbxLY7J4WlUnUbCCCnW4FP7G + b8HjFItBri9hIjtV3a6H+rMBfmpNXyzAhTuvAtxUmB7ZHyUUF/kVIxpjA4SRWs= + BPK + + + Maxima + Musterfrau + Mag.Dr. + + 1950-08-01 + + + + AUT + 1050 + Wien + 90001 + Wien + + Brandmayergasse + 2/10 + + + ZUSTELLADRESSE + + + J + + 101 + + 2010-06-12 + 2999-12-31 + vertritt seit 18.12.2010 selbständig + + + 0999 + Rechtstatsachentext zur Funktion + + + + 0999 + Rechtstatsachentext zur Person + + + + + + \ No newline at end of file diff --git a/src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage_response.xml b/src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage_response.xml new file mode 100644 index 0000000..bed187e --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/examples/example_neuanlage_response.xml @@ -0,0 +1,123 @@ + + + 1 + OK + + + + 9110001021537 + ERJ + Ordnungsnummer aus dem ERsB + 2012-06-01+01:00 + + + R011S390Q + KUR + Kennziffer des Unternehmensregisters + 2012-06-01+01:00 + + Max Mustermann + Einzelunternehmen + + Max Mustermann + + + 1 + Einzelunternehmen + 101 + Einzelunternehmen + + + + + AUT + 1220 + Wien + 90001 + Wien + + Prandaugasse + 10/2 + + + SITZ + + + + 2010-06-12 + + + Text für Bestandsnachweis + + Vertretungsregelung für das Unternehmen + + 001 + 0999 + Rechtstatsachentext zum Unternehmen + + + + + A + PNR + Personennummer + + + Maxima + Musterfrau + Mag.Dr. + + 1950-08-01 + + + + AUT + 1050 + Wien + 90001 + Wien + + Brandmayergasse + 2/10 + + + ZUSTELLADRESSE + + + J + + 101 + Inhaber + + 2010-06-12 + 2999-12-31 + vertritt seit 18.12.2010 selbständig + + + 001 + 0999 + Rechtstatsachentext zur Funktion + + + + 001 + 0999 + Rechtstatsachentext zur Person + + + + + + 2012-06-01+01:00 + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/PersonData_Ersb.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/PersonData_Ersb.xsd new file mode 100644 index 0000000..4fbae28 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/PersonData_Ersb.xsd @@ -0,0 +1,466 @@ + + + + + + + + + + + + + + + + + + + + This version of person deploys only global elements. All types derived from abstract types have been replaced by substitution groups + + + + + Abstraktes PersonenDaten Element, nur auf englisch verfügbar, nicht direkt benützen sondern PersonenDaten benutzen + + + + + + Signierte Personendatenstruktur + + + + + + + Abstraktes Personen Element, nur auf englisch verfügbar, nicht direkt benützen sondern NatuerlichePerson o. NichtNatuerlichePerson benutzen + + + + + + Natuerliche Person entspricht PhysicalPerson, ist eine Ableitung von Person (abstract) + + + + + + NichtNatuerlichePerson entspricht CorporatzeBody, ist Ableitung von Person (abstract) + + + + + + + Container für diverse Namensbestandteile, entspricht Name in der englischen Version + + + + + + + + + Abstraktes Address Element, nur auf Englisch verfügbar, nicht direkt benützen sondern PostAdresse, InternetAdresse, etc benutzen + + + + + Post oder ZMR Adresse, entspricht PostalAddress, ist Ableitung von Address (abstract) + + + + + + Typisierte Post oder ZMRAdresse, entspricht TypedPostalAddress, ist Ableitung von Address (abstract) + + + + + + + Geburtsdatum, entspricht DateOfBirth + + + + + + + + + + + Container um eine Person und ihre Adressen zu speichern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Container um eine Person und ihre Adressen zu speichern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Container für beliebige Identifikationsmerkmale, besteht aus Type und Value Unterelementen, aus technischen Gründen nur auf Englisch verfügbar + + + + + actual value of the identifier. + + + + + + + + + + + + type of value (eg 'ZMR', 'SV-Nummer', 'Martrikelnummer', database identification, ...) + + + + + + + + + + + + + + + + + + main structure of person data + + + + + unique identification entities + + + + + + + + + + entspricht PhysicalPersonType + + + + + + + + + + + + + + + + + + + + entspricht CorporateBodyType + + + + + + + name of corporate body (whole name) + + + + + + type of company (eg AG, OHG, ...) + + + + + + + + + + + + + + + + + + + entspricht NameType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struktur des Abstrakten Address Elements + + + + + + + + + + entspricht TypedPostalAddressType + + + + + + + + + + + + + + + + + + entspricht PostalAddressType + + + + + + + Staatencode, ISO Code oder internationaler Post code, entspricht CountryCode + + + + + + + + + + entspricht PostalCode + + + + + + entspricht Municipality + + + + + + + Zustelladresse oder ZMRAdresse, entspricht DeliveryAddress + + + + + + Bei Ortschaften ohne Straßenname steht hier Ortschaftsname, entspricht StreetName + + + + + Hausnummer oder Konskriptionsnummer, z.B. 10, 124a, 78-80. Entpricht BuildingNumber + + + + + Gebäudeteil oder eigneens Gbäude, z.B. Stiege, Werkstatt, ..... Entspricht Unit + + + + + Tuernummer oder andere naehere Beschreibung der Adresse (z.B. 4. Stock rechts). Entspricht DoorNumber + + + + + zmr use only + + + + + Addressregister database keys used to identify Addresses + + + + + + + + + + + + + + + + + + + + + + + einfacher Datentyp für Daten (union): Tag und/oder Monta können ausgelassen werden, entspricht DayOfBirthType + + + + + + + + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/PersonData_URSuche.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/PersonData_URSuche.xsd new file mode 100644 index 0000000..6c8209a --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/PersonData_URSuche.xsd @@ -0,0 +1,511 @@ + + + + + + + + + + + + + + + This version of person deploys only global elements. + All types derived from abstract types have been replaced by + substitution groups + + + + + Abstraktes PersonenDaten Element, nur auf englisch + verfügbar, nicht direkt benützen sondern PersonenDaten benutzen + + + + + + + Signierte Personendatenstruktur + + + + + + + Abstraktes Personen Element, nur auf englisch + verfügbar, nicht direkt benützen sondern NatuerlichePerson o. + NichtNatuerlichePerson benutzen + + + + + + Natuerliche Person entspricht PhysicalPerson, ist + eine Ableitung von Person (abstract) + + + + + + NichtNatuerlichePerson entspricht CorporatzeBody, + ist Ableitung von Person (abstract) + + + + + + + Container für diverse Namensbestandteile, + entspricht Name in der englischen Version + + + + + + + + + Abstraktes Address Element, nur auf Englisch + verfügbar, nicht direkt benützen sondern PostAdresse, + InternetAdresse, etc benutzen + + + + + Post oder ZMR Adresse, entspricht PostalAddress, + ist Ableitung von Address (abstract) + + + + + + Typisierte Post oder ZMRAdresse, entspricht + TypedPostalAddress, ist Ableitung von Address (abstract) + + + + + + + + Geburtsdatum, entspricht DateOfBirth + + + + + + + + + + + + Container um eine Person und ihre Adressen zu + speichern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Container um eine Person und ihre Adressen zu + speichern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Container für beliebige Identifikationsmerkmale, + besteht aus Type und Value Unterelementen, aus technischen Gründen + nur auf Englisch verfügbar + + + + + actual value of the identifier. + + + + + + + + + + + + + type of value (eg 'ZMR', 'SV-Nummer', + 'Martrikelnummer', database identification, ...) + + + + + + + + + + + + + + + + + + main structure of person data + + + + + unique identification entities + + + + + + + + + + entspricht PhysicalPersonType + + + + + + + + + + + + + + + + + + + + entspricht CorporateBodyType + + + + + + + name of corporate body (whole name) + + + + + + + + type of company (eg AG, OHG, ...) + + + + + + + + + + + + + + + + + + + + entspricht NameType + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Struktur des Abstrakten Address Elements + + + + + + + + + + + entspricht TypedPostalAddressType + + + + + + + + + + + + + + + + + + + entspricht PostalAddressType + + + + + + + Staatencode, ISO Code oder internationaler Post + code, entspricht CountryCode + + + + + + + + + + entspricht PostalCode + + + + + + entspricht Municipality + + + + + + + Zustelladresse oder ZMRAdresse, entspricht + DeliveryAddress + + + + + + Bei Ortschaften ohne Straßenname steht hier + Ortschaftsname, entspricht StreetName + + + + + Hausnummer oder Konskriptionsnummer, z.B. + 10, 124a, 78-80. Entpricht BuildingNumber + + + + + Addressregister database keys used to identify Addresses + + + + + + + + + + + + + + + + + + + + + + + einfacher Datentyp für Daten (union): Tag und/oder + Monta können ausgelassen werden, entspricht DayOfBirthType + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/ersb-types.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/ersb-types.xsd new file mode 100644 index 0000000..882d16a --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/ersb-types.xsd @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/specific/CustomFault.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/specific/CustomFault.xsd new file mode 100644 index 0000000..c73d667 --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/specific/CustomFault.xsd @@ -0,0 +1,18 @@ + + + + + + + + CustomFault reporting structure + + + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypes.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypes.xsd new file mode 100644 index 0000000..13081bb --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypes.xsd @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypesErsb.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypesErsb.xsd new file mode 100644 index 0000000..93b9bbf --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/ur-basicTypesErsb.xsd @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/wsdl/ERsB/1.3/schema/ur-simpleTypes.xsd b/src/main/resources/wsdl/ERsB/1.3/schema/ur-simpleTypes.xsd new file mode 100644 index 0000000..7533ead --- /dev/null +++ b/src/main/resources/wsdl/ERsB/1.3/schema/ur-simpleTypes.xsd @@ -0,0 +1,443 @@ + + + + + + + + + + + + + Versionsnummer + + + + + + + + + + + Identifikationsnummer eines Quellregisters + + + + + + + + + + + Status des Vollzugsobjektes + + + + + + + + + + + + + Im Ergebnis berücksichtigte Status des Vollzugsobjektes + + + + + + + + + + + + + + + + + + UR Kennziffer eines Unternehmens + + + + + + + + + + + + Firmenbuchnummer + + + + + + + + + + + + Vereinsregisternummer + + + + + + + + + + + + Ordnungsnummer aus dem ERsB + + + + + + + + + + + + Bezeichnung eines Unternehmens + + + + + + + + + + + unverschlüsseltes bPK + + + + + + + + + + + verschlüsseltes bPK (base64 codiert) + + + + + + + + + + + Rechtsformcode eines Unternehmens + + + + + + + + + + + + Langtext der Rechtsform eines Unternehmens + + + + + + + + + + + Art eines externen Schlüssels + + + + + + + + + + + Wert eines externen Schlüssels + + + + + + + + + + + Jahr des ֖NACE-Systems + + + + + + + + + + + + + ֖NACE - Branchenkennzahl + + + + + + + + + + + Art der ֖NACE (Haupt-/Nebentätigkeit) + + + + + + + + + + + + Rechtstatsachen-Nummer + + + + + + + + + + + Rechtstatsachen-Code + + + + + + + + + + + + + + + Strassenname + + + + + + + + + + + Hausnummer + + + + + + + + + + + Postleitzahl + + + + + + + + + + + Ortsname + + + + + + + + + + + Gemeindekennziffer + + + + + + + + + + + + Landescode gem. ISO 3166 ALPHA-3 + + + + + + + + + + + AdressTyp + + + + + + + + + + + + + + + + Nachname der vertretungsbefugten Person + + + + + + + + + + + Vorname der vertretungsbefugten Person + + + + + + + + + + + Titel der vertretungsbefugten Person + + + + + + + + + + + Funktionscode der vertretungsbefugten Person + + + + + + + + + + + + Funktionsbezeichnung der vertretungsbefugten Person + + + + + + + + + + + Funktionsregeltext für vertretungsbefugte Person + + + + + + + + + + + + Art der Vertretungsbefugnis + + + + + + + + + + + Einzelvertretungsbefugnis + + + + + + + + + \ No newline at end of file diff --git a/src/test/java/at/gv/util/demo/Clienttests.java b/src/test/java/at/gv/util/demo/Clienttests.java new file mode 100644 index 0000000..e984263 --- /dev/null +++ b/src/test/java/at/gv/util/demo/Clienttests.java @@ -0,0 +1,392 @@ +package at.gv.util.demo; + +import iaik.security.ecc.interfaces.ECDSAParams; +import iaik.security.ecc.interfaces.ECDSAPublicKey; +import iaik.security.ecc.math.ecgroup.AffineCoordinate; +import iaik.security.ecc.math.ecgroup.ECPoint; +import iaik.security.ecc.provider.ECCProvider; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.math.BigInteger; +import java.security.InvalidKeyException; +import java.security.PublicKey; +import java.security.interfaces.DSAParams; +import java.security.interfaces.DSAPublicKey; +import java.security.interfaces.ECPublicKey; +import java.security.interfaces.RSAPublicKey; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; + +import javax.xml.bind.JAXBElement; +import javax.xml.namespace.QName; +import javax.xml.transform.TransformerException; + +import org.apache.cxf.common.util.Base64Utility; +import org.w3c.dom.Element; + +import at.gv.util.BpkUtil; +import at.gv.util.DOMUtils; +import at.gv.util.client.szr.SZRClient; +import at.gv.util.client.ur_V5.URClient; +import at.gv.util.client.ur_V5.URClient.URSearchResult; +import at.gv.util.client.ur_V5.URClientException; +import at.gv.util.config.EgovUtilPropertiesConfiguration; +import at.gv.util.data.BPK; +import at.gv.util.ex.EgovUtilException; +import at.gv.util.wsdl.szr.SZRException; +import at.gv.util.xsd.szr.GetIdentityLink; +import at.gv.util.xsd.szr.IdentityLinkType; +import at.gv.util.xsd.szr.PersonInfoType; +import at.gv.util.xsd.szr.TravelDocumentType; +import at.gv.util.xsd.szr.ecdsa.DomainParamsType; +import at.gv.util.xsd.szr.ecdsa.ECDSAKeyValueType; +import at.gv.util.xsd.szr.ecdsa.ECPointType; +import at.gv.util.xsd.szr.ecdsa.NamedCurveType; +import at.gv.util.xsd.szr.ecdsa.PrimeFieldElemType; +import at.gv.util.xsd.szr.persondata.IdentificationType; +import at.gv.util.xsd.szr.persondata.PersonNameType; +import at.gv.util.xsd.szr.persondata.PhysicalPersonType; +import at.gv.util.xsd.szr.xmldsig.DSAKeyValueType; +import at.gv.util.xsd.szr.xmldsig.KeyValueType; +import at.gv.util.xsd.szr.xmldsig.RSAKeyValueType; + +public class Clienttests { + + public static String XFN_NAME = "Firmenbuchnummer"; + public static String XFN_VALUE = "urn:publicid:gv.at:baseid+XFN"; + public static String XFN_URT = "FBN"; + + public static String XZVR_NAME = "ZVR-Zahl"; + public static String XZVR_VALUE = "urn:publicid:gv.at:baseid+XZVR"; + public static String XZVR_URT = "ZVR"; + + public static String XERSB_NAME = "ERsB Ordnungsnummer"; + public static String XERSB_VALUE = "urn:publicid:gv.at:baseid+XERSB"; + public static String XERSB_URT = "ERJ"; + + public static List UR_TYPES = Arrays.asList(XFN_URT, XZVR_URT, XERSB_URT); + + public static HashSet ERSB_KEYS = new HashSet(); + + public static final String SSPIN_PREFIX = "urn:publicid:gv.at:cdid+"; + + private final static byte[] DEFAULT_PUBL_KEY = new byte[] {48, -127, -97, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -127, -115, 0, 48, -127, -119, 2, -127, -127, 0, -106, 114, -113, -1, -84, 116, 35, 3, 70, -81, 81, -110, -10, -59, 114, 4, -109, 86, 127, -50, 125, 47, 4, 80, 79, 53, 117, -36, 15, -16, -61, 110, 39, 89, 29, -43, 37, -127, 80, -109, -38, 65, 125, -119, 44, -111, -21, 47, -98, 38, -112, -24, 107, -110, 17, -10, 51, -4, -36, -72, -28, -18, -14, 117, -67, 76, -31, 32, 92, 104, -21, 68, 31, -12, 30, -104, -104, 42, -107, 126, 84, 50, 85, -117, 44, -100, -4, 102, -100, 52, -68, 77, -32, 9, -16, -30, -104, -90, 107, -88, 7, 97, -94, 72, -61, -40, 80, -112, -65, -25, -72, -19, -95, -54, 31, 15, 24, -105, 123, -81, 23, -123, 92, -103, -101, 47, 47, -105, 2, 3, 1, 0, 1}; + public static final String DOCUMENT_TYPE = "ELEKTR_DOKUMENT"; + public static final String ERnB_ISSUEDATE = "2014-01-01"; + public static final String ERnB_ISSUINGAUTHORITY = "SZR-Gateway"; + + @SuppressWarnings("unused") + public static void main(String[] args) throws IOException { + + String propertiesFileLocation = System.getProperty("mis.configuration"); + + if (propertiesFileLocation == null) { + System.out.println("No system properties found. Cannot load default configuration."); + throw new IOException("Cannot load default configuration. Please specify first mis.configuration location in system properties."); + + } + + File propertiesFile = new File(propertiesFileLocation); + FileInputStream fis = new FileInputStream(propertiesFile); + String configDir = propertiesFile.getParentFile().getAbsolutePath(); + Properties props = new Properties(); + props.load(fis); + + EgovUtilPropertiesConfiguration egovUtilConfiguration = new EgovUtilPropertiesConfiguration(props, configDir); + + ERSB_KEYS.add("136"); + ERSB_KEYS.add("137"); + ERSB_KEYS.add("138"); + ERSB_KEYS.add("139"); + ERSB_KEYS.add("140"); + + try { + SZRClient szrClient = new SZRClient(egovUtilConfiguration); + URClient urClient = new URClient(egovUtilConfiguration, UR_TYPES, ERSB_KEYS, false, false); + + + PersonInfoType personInfo = new PersonInfoType(); + PhysicalPersonType person = new PhysicalPersonType(); + personInfo.setPerson(person); + PersonNameType personName = new PersonNameType(); + person.setName(personName ); + + IdentificationType id = new IdentificationType(); + +// id.setType(SSPIN_PREFIX + "ZP"); +// id.setValue("U/wThc0XOTZp9Tvsxrh8DhGTXsU="); +// person.setIdentification(id); + + personName.setFamilyName("Karning"); + personName.setGivenName("Bernhard"); + person.setDateOfBirth("1976-01-15"); + + + + String baseID = szrClient.getStammzahl(personInfo ); + + BPK zpBpk = BpkUtil.createBPK(baseID, "ZP"); + + String encryptedbPK = szrClient.transformBPK(personInfo, zpBpk.getBpk(), SSPIN_PREFIX + "ZP", SSPIN_PREFIX + "WT-UR", "BBA-STA"); + + +// GetIdentityLink idlReq = createGetIdentityLink(); +// +// String baseIDResp = szrClient.getStammzahl(personInfo); +// +// IdentityLinkType idlResp = szrClient.getIdentityLink( +// idlReq.getPersonInfo(), +// idlReq.getKeyValue(), +// false); +// Element idl = (Element)idlResp.getAssertion(); +// System.out.println(DOMUtils.serializeNode(idl)); + + + List urResult = urClient.searchByBpk(encryptedbPK); + + System.out.println("Finish"); + + + + } catch (EgovUtilException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } catch (SZRException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + + } catch (URClientException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + private static GetIdentityLink createGetIdentityLink(){ + + // set parameter + GetIdentityLink getIdentityLink = new GetIdentityLink(); + + // generate PersonData + PersonNameType personName = new PersonNameType(); + personName.setFamilyName("Janez Vzorec"); + personName.setGivenName("Janez Vzorec"); + + PhysicalPersonType physicalPerson = new PhysicalPersonType(); + SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); + + String birthday = "1998-12-06"; + if (birthday != null) + physicalPerson.setDateOfBirth(birthday); + + physicalPerson.setName(personName); + + PersonInfoType personInfo = new PersonInfoType(); + personInfo.setPerson(physicalPerson); + + + // add Traveldocument + + TravelDocumentType trvlDoc = new TravelDocumentType(); + + // parse STORK-eID to his components + //ERnB allows only eIDs with a maximum length of 54 signs + trvlDoc.setDocumentNumber("33333333"); + trvlDoc.setIssuingCountry("SI"); + trvlDoc.setDocumentType(DOCUMENT_TYPE); + + //set default values from SZR because certificate for mandator natural person is not + //available in case of authentication with electronic mandates. + trvlDoc.setIssueDate(ERnB_ISSUEDATE); + trvlDoc.setIssuingAuthority(ERnB_ISSUINGAUTHORITY); + + JAXBElement jaxbtrvlDoc = personInfo.getTravelDocument(); + + if (jaxbtrvlDoc == null) + jaxbtrvlDoc = new JAXBElement(new QName("urn:SZRServices", "TravelDocument"), TravelDocumentType.class, trvlDoc); + else + jaxbtrvlDoc.setValue(trvlDoc); + + //personInfo.setTravelDocument(jaxbtrvlDoc); + + // Personendaten setzen + getIdentityLink.setPersonInfo(personInfo); + + // add Keys + + PublicKey pb; + List keyvalueList = getIdentityLink.getKeyValue(); + if (keyvalueList == null) + keyvalueList = new ArrayList(); + + + try { + pb = new iaik.security.rsa.RSAPublicKey(DEFAULT_PUBL_KEY); + List keys = getKeyValueTypes(pb); + keyvalueList.addAll(keys); + + } catch (InvalidKeyException e) { + e.printStackTrace(); + + } + + // set Insert ERnP flag + getIdentityLink.setInsertERnP(false); + +// Constants.DATA_LOGGER.debug("Person wird im SZR und ERnP gesucht bzw. gegebenenfalls im ERnP eingetragen: " +// + natPerson.getFamilyName() + " " + natPerson.getGivenName() + " " + natPerson.getBirthday() +// + " eID=" + natPerson.geteID() , tid); + + return getIdentityLink; + + } + + /** + * Returns the according key value types from the given public key + * @param pb + * @return + * @throws SZRGWException + */ + private static List getKeyValueTypes(PublicKey pb) { + List keys = new ArrayList(); + + ECCProvider.addAsProvider(); + + //System.out.println(pb); + + if (pb instanceof RSAPublicKey) { + //System.out.println("Is a RSAPublicKey"); + //Extract key data + RSAPublicKey rsapb = (RSAPublicKey)pb; + + BigInteger modulus = rsapb.getModulus(); + BigInteger exponent = rsapb.getPublicExponent(); + + //System.out.println("Modulus: " + modulus); + //System.out.println("PublicExponent: " + exponent); + + // set key values + RSAKeyValueType rsa = new RSAKeyValueType(); + ; + rsa.setExponent(Base64Utility.encode(exponent.toByteArray())); + rsa.setModulus(Base64Utility.encode(modulus.toByteArray())); + + + KeyValueType key = new KeyValueType(); + key.setRSAKeyValue(rsa); + keys.add(key); + + } + + if (pb instanceof DSAPublicKey) { + //System.out.println("Is a DSAPublicKey"); + // extract key data + DSAPublicKey dsapb = (DSAPublicKey) pb; + BigInteger y = dsapb.getY(); + DSAParams param = dsapb.getParams(); + BigInteger g = param.getG(); + BigInteger p = param.getP(); + BigInteger q = param.getQ(); + +// System.out.println("Y: " + y); +// System.out.println("G: " + g); +// System.out.println("P: " + p); +// System.out.println("Q: " + q); +// + //set key values + DSAKeyValueType dsa = new DSAKeyValueType(); + if (y != null) + dsa.setY(y.toString()); + if (g != null) + dsa.setG(g.toString()); + if (p != null) + dsa.setP(p.toString()); + if (q != null) + dsa.setQ(q.toString()); + + KeyValueType key = new KeyValueType(); + key.setDSAKeyValue(dsa); + keys.add(key); + + } + + if (pb instanceof ECDSAPublicKey) { + + //Extract key data + ECDSAPublicKey ecdsapb= (ECDSAPublicKey)pb; + ECDSAParams params = ecdsapb.getParameter(); + //EllipticCurve curve = params.getG().getCurve(); + String oid = params.getOID(); + //String name = ObjectID.getRegisteredName(oid); + ECPoint w = ecdsapb.getW(); + AffineCoordinate coordinate = (AffineCoordinate) w.getCoordinates().toAffine(); + String x = coordinate.getX().toBigInt().toString(); + String y = coordinate.getY().toBigInt().toString(); + + ECDSAKeyValueType ecdsa = new ECDSAKeyValueType(); + DomainParamsType paramstype = new DomainParamsType(); + NamedCurveType namedCurve = new NamedCurveType(); + namedCurve.setURN("urn:oid:" + oid); + paramstype.setNamedCurve(namedCurve); + ecdsa.setDomainParameters(paramstype); + + ECPointType ecpointtype = new ECPointType(); + PrimeFieldElemType xElem = new PrimeFieldElemType(); + xElem.setValue(x); + PrimeFieldElemType yElem = new PrimeFieldElemType(); + yElem.setValue(y); + ecpointtype.setX(xElem); + ecpointtype.setY(yElem); + ecdsa.setPublicKey(ecpointtype); + + KeyValueType key = new KeyValueType(); + key.setECDSAKeyValue(ecdsa); + keys.add(key); + + //throw new SZRGWException("Certificate enthält einen ECDSAPublicKey. Dieser wird momentan noch nicht unterstützt."); + } + + if (pb instanceof ECPublicKey) { + //System.out.println("Is a ECPublicKey"); + + +// throw new SZRGWException("Certificate enthält einen ECPublicKey. Dieser wird momentan noch nicht unterstützt."); + + + +// ECPublicKey ecpb = (ECPublicKey) pb; +// +// System.out.println(ecpb.toString()); +// +// ECParameterSpec params = ecpb.getParams(); +// EllipticCurve curve = params.getCurve(); +// +// ECDSAKeyValueType ecdsa = new ECDSAKeyValueType(); +// DomainParamsType domainparams = new DomainParamsType(); +// NamedCurveType curvetype = new NamedCurveType(); +// curvetype.setURN("P-192"); +// domainparams.setNamedCurve(curvetype); +// ecdsa.setDomainParameters(domainparams); +// ECPointType publicKey = new ECPointType(); +// PrimeFieldElemType x = new PrimeFieldElemType(); +// x.setValue("12345x"); +// publicKey.setX(x); +// PrimeFieldElemType y = new PrimeFieldElemType(); +// y.setValue("12345y"); +// publicKey.setY(y); +// ecdsa.setPublicKey(publicKey); +// keys[0].setECDSAKeyValue(ecdsa); + + + } + + return keys; + } + +} -- cgit v1.2.3