HDN Software. Versie 1.4 7 juli 2010. A. Canrinus P.A. van der Boom E.W. Pennings R.Vos. Reference Manual



Vergelijkbare documenten
HDN Software. Versie februari A. Canrinus P.A. van der Boom E.W. Pennings R.Vos. Reference Manual

HDN SOFTWARE REFERENCE MANUAL


Basis communicatie netwerk

Basis communicatie netwerk

EUROFACE Financial Services B.V. - PEOPLE IN SOFTWARE - HDN in Finix

Taxis Pitane. Transporter. Censys BV Eindhoven

Temperatuur logger synchronisatie

HDN DARTS WEB AUTHENTICATIE

De MySQL C API. Variabelen in C Functies in C Pointers in C

DrICTVoip.dll v 2.1 Informatie en handleiding

Installatie en configuratie 1.1. Licentie Systeem. Dé specialist in ruimtelijke informatievoorziening

Aanleveren van te verzenden sms berichten aan SMS Via

KeyLink B.V. KeyLink CTI Client Installation Manual - Dutch

Rapport. i-bridge FleetBroker en LocationBroker. Versie 1.0. Datum 22 December 2010

INSTALLATIE EXCHANGE CONNECTOR

Handleiding Installatie en Gebruik Privacy- en Verzend Module Stichting Farmaceutische Kengetallen

Automatische Installatie op IIS server

Installatiehandleiding Cane Webservices.nl Integratie

WISA API Service. 5 maart WISA helpdesk

Implementatie AssurePay ASP.NET. ideal

HDN POORTWACHTER WEBSERVICE KOPPELING

HTTP SMS API Technische Specificatie messagebird.com versie mei 2014

FOUTAFHANDELINGEN TIJDENS HET AANLEVEREN VAN BESTANDEN VOOR KNOOPPUNTDIENSTEN WMO EN JW

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

ASRemote WebService. Via deze webservice kunt u:

HDN SOFTWARE REFERENCE MANUAL

Dynamiek met VO-Script

Installatiehandleiding Business Assistent

Proware Cloud Webbuilder Versie 2.30

Installatiehandleiding Business Assistent

Technisch Ontwerp VISSIM-PPA Koppeling

UBizz-UBizz Exchange For more information visit our website at

Revisie geschiedenis. [XXTER & KNX via IP]

Werken op afstand via internet

Technical Note. API Beschrijving Aangetekend Mailen

AFO 142 Titel Aanwinsten Geschiedenis

Handleiding voor de applicatiebeheerder Cane Webservices.nl Integratie

BRIGHT-NET INSTALLATIE HANDLEIDING

Bijlage 1-Procedure voor de implementatie van het AGR-GPS systeem PROCEDURE VOOR DE IMPLEMENTATIE VAN HET AGR-GPS SYSTEEM

Overheidsservicebus met volledige Digikoppeling connectiviteit. Foutberichten en foutafhandeling

HDN Certificaten. Handleiding. Versie januari E.F. de Groot. Communications Security Net B.V. Brugweg 56 Postbus AG Waddinxveen

HANDLEIDING WEBSERVICES DICOS NETWERK VERSIE 1.6

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Seriële bluetooth verbinding ATmega128

IBAN API. Simpel & krachtig. Documentatie : IBAN REST API Versie : 1.0 DE BETAALFABRIEK

SMS Webservice Implementatie handleiding

GEBRUIKERSHANDLEIDING KNOOPPUNTDIENSTEN BERICHTUITWISSELING VIA WEBSERVICE

TECHNISCHE HANDLEIDING MESSAGESERVICE WEBSERVICE

Uniforme Pensioen Aangifte (UPA)

Ontwerp Versturen Patiëntgegevens

BRIGHT-NET INSTALLATIE HANDLEIDING

Poortcontroles en afhandeling OLP

Aansluit handleiding Omgevingsloket online. Webservices INREGELOMGEVING (INR) Directie Concern Informatievoorziening

Aansluitdocument webservices. VSP-EDP Validatiemodule

Mails zenden met Lazarus

Juliana van Stolberglaan CA Den Haag Postbus AC Den Haag [Handleiding Generieke interface Energielabels.

HANDLEIDING SMTP DIENST BEDRIJVENWEB NEDERLAND B.V.

Les 9: formulier controle met javascript.

Externe pagina s integreren in InSite en OutSite

Standaard koppelvlak Digikoppeling adapter Servicebus. Datum: 18 augustus 2014 Versie: 0.3 Auteur: M. van den Broek

AFO 139 Automatische export

Cloud2 Online Backup - CrashplanPRO

ZN - Handleiding Instellen Microsoft Outlook 2016

Beschrijving webmail Enterprise Hosting

Softphone Installatie Handleiding

Installatie- en gebruikshandleiding Risicoverevening. 11 april 2007 ZorgTTP

Gebruikershandleiding. StUF Testplatform Versie 1.3.0

HDN PROXYSERVER LINUX

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

uziconnect Installatiehandleiding

Het gebruik van OSB ebms contracten in complexe infrastructuren

2BA Deeplink Gebruiksbeschrijving

Beschrijving OpenTunnel koppelvlak met MijnOverheid BerichtenBox

Xelion ESPA koppeling Handleiding Beheer V1.6

Voor op afstand os installatie moeten de volgende onderdelen geïnstalleerd zijn op de Windows 2000 server.

Handleiding voor de applicatiebeheerder van Business Assistent

SERVER MONITOR SMS SERVER

uziconnect Installatiehandleiding

Releasebeschrijving e-former versie 7.0

DE ELEKTRONISCHE IDENTITEITSKAART (EID)

Aansluithandleiding Omgevingsloket online. Webservices PRODUCTIEOMGEVING. Directie Concern Informatievoorziening Beheer

6.1 Foutmeldingen. Bijlagen Foutmeldingen

Installatie en configuratie 1.0. Licentie Systeem. Dé specialist in ruimtelijke informatievoorziening

REST Implementatie. Versie ideal

Net2CountedAccess. Handleiding 1.0

ZN - Handleiding Instellen Windows Live Mail 2012

Technote. EnGenius Senao EOM Mesh Layer 2 configuratie Transparant netwerk

HANDLEIDING DMS Plugin Installatie, configuratie & werking

Transcriptie:

HDN Software Reference Manual Versie 1.4 7 juli 2010 A. Canrinus P.A. van der Boom E.W. Pennings R.Vos Communications Security Net BV Brugweg 56 Postbus 264 2740 AG Waddinxveen

Titel : HDN Software Reference Manual Document-code : HDN REF-001-1.1 Project : HDN Innovatie Auteur : A. Canrinus, P.A. van der Boom, E.W. Pennings, R.Vos Versie : 1.4 Datum : 7 juli 2010 Uitgegeven door : Communications Security Net BV 2

Inhoud Hoofdstuk 1 Inleiding 6 1.1 Het doel van dit document... 6 1.2 Doelgroep van dit document... 6 1.3 Reikwijdte... 6 1.4 Opbouw van dit document... 6 1.5 Definities... 6 Hoofdstuk 2 Algemene beschrijving 8 2.1 Overzicht... 8 2.1.1 Functioneel... 8 2.1.2 Technisch... 8 2.2 De HDN Client... 9 2.2.1 De componenten van een HDN Client... 9 2.2.2 Integratie van de HDN Client met het hypotheek-adviespakket... 10 2.2.3 Integratie van synchrone communicatie... 11 2.3 De HDN Server... 13 2.3.1 De componenten van een HDN Server... 13 2.3.2 Integratie van de HDN Server met back-office software... 14 Hoofdstuk 3 De Wesly libraries 16 3.1 De library gebruiken... 16 3.2 De Wesly Client library... 16 3.2.1 De functies... 16 3.2.2 Functie prototypes... 16 3.2.3 Voorbeelden... 17 3.2.4 hdngetendpoint... 18 3.2.5 hdnsyncgetendpoint... 19 3.2.6 hdngetnodenumber... 20 3.2.7 hdniscertactive... 21 3.2.8 hdnsend... 22 3.2.9 hdnsyncsend... 25 3.2.10 hdnreceivefrom... 28 3.2.11 hdnsetlog... 31 3.2.12 hdnvalidate... 32 3.2.13 hdnvalidateex... 33 3.3 De Wesly Server library... 36 3.3.1 De functies... 36 3.3.2 Functie prototypes... 36 3.3.3 Callbacks... 36 3.3.3.1 CB_PUTMESSAGE... 37 3.3.3.2 CB_GETMESSAGE... 37 3.3.3.3 CB_GETNBROFMESSAGES... 38 3.3.3.4 CB_RESULTGETMESSAGE... 38 3.3.3.5 CB_CONTINUESERVICE... 39 3.3.4 Voorbeelden... 39 3.3.5 hdnrunserver... 40 3.3.6 hdngetendpoint... 42 Hoofdstuk 4 Installatie controle 44 3

4.1 Overzicht... 44 4.1.1 Controle op aanwezigheid... 44 4.1.2 Controle op actief certificaat... 45 4.2 De HDN gegevensdirectory... 46 Hoofdstuk 5 HDN bericht schema's en Validatie 47 5.1 Inleiding... 47 5.2 Het ophalen van schema's... 47 5.2.1 Commandline parameters... 47 5.2.2 De configuratieparameters... 48 5.2.3 De schema-directory... 48 5.2.4 De bestanden in de schema-directory... 48 5.3 De beheertool en de schemawebservice... 49 5.4 Validatie van HDN berichten... 50 5.4.1 Bepalen berichtsoort en ontvangercode... 50 5.4.2 Valideren tegen het XSD schema... 51 5.4.3 Valideren tegen het controle XML... 51 5.4.4 VX bericht... 51 Hoofdstuk 6 Parameterbestanden 54 6.1 Algemene parameters... 54 6.2 Het parameterbestand inca.prm... 54 6.3 Het parameterbestand wesly.prm... 56 6.3.1 Timers bij het opzetten van een verbinding... 57 6.3.2 Timers bij het versturen en ontvangen van berichten... 58 6.4 Parameterbestanden van een HDN Server... 60 6.4.1 Het parameterbestand opa.prm... 60 6.4.2 Het parameterbestand qcop.prm... 61 6.4.3 Het parameterbestand mash.prm... 62 6.4.4 Het parameterbestand smash.prm... 63 6.5 Parameterbestanden van een HDN MultiServer... 63 6.5.1 Het parameterbestand addnode.prm... 63 6.5.2 Het parameterbestand subnodes.prm... 63 6.5.3 Het parameterbestand updnodes.prm... 64 6.6 Parameters voor verdeling van ontvangen berichten... 65 6.7 Parameters voor voor- en nabehandeling van berichten... 65 6.8 Parameters voor verdeling van ontvangen berichten per adviespakket... 66 Hoofdstuk 7 Externe koppelingen 68 7.1 Algemeen... 68 7.2 Lockbestanden... 68 7.3 Berichten versturen... 70 7.4 Berichten ontvangen... 71 7.5 Voor- en nabehandeling van berichten... 72 Hoofdstuk 8 Hulpprogramma s 74 8.1 Ophalen van berichten uit het centrale archief... 74 Hoofdstuk 9 Aanroep HDN diensten 76 9.1 Algemeen... 76 4

9.2 HDN Dienst Berichten... 76 9.3 Informatie over diensten... 77 9.4 Wesly Dienstaanroep... 77 9.5 Testapplicatie... 77 Appendix A Aanpassingen in dit document 79 Appendix B Overzicht van de foutcodes 81 Appendix C XSD voor Controle-XML 84 Appendix D XSD voor VX bestand 87

Hoofdstuk 1 Inleiding 1.1 Het doel van dit document Dit document heeft tot doel om de publieke interface van de Wesly Client Library en de Wesly Server Library te beschrijven. De Wesly Client Library is de communicatie library van de HDN client software. De interface biedt de bouwers van adviessoftware de mogelijkheid om direct vanuit het pakket de berichten te valideren en te verzenden. De Wesly Server Library is de communicatie library voor de HDN webservice software. De interface biedt de software ontwerpers de mogelijkheid om de HDN webservice direct te koppelen aan de backoffice van een Maatschappij. 1.2 Doelgroep van dit document De doelgroep voor dit document bestaat uit de bouwers van de hypotheek adviespakketten die gebruik maken van het HDN netwerk en de bouwers van maatschappij backoffice software. Van u als lezer wordt verwacht dat u enige kennis van de programmeertaal C heeft. 1.3 Reikwijdte Dit document beschrijft de interface van de Wesly Client library, de interface van de Wesly Server library, informatie over de configuratie van de HDN software en informatie over de integratie van de HDN software met overige programmatuur. Alle voorbeeld programma's zijn geschreven in C en getest met Microsoft Visual C/C++ 8.0. 1.4 Opbouw van dit document Dit eerste hoofdstuk geeft een inleiding op het document, een lijst van gebruikte definities en een overzicht van geraadpleegde literatuur. Hoofdstuk twee geeft een algemene beschrijving van de communicatie software. In hoofdstuk drie wordt de interface van de Wesly Client library en de Wesly Server library beschreven. Hoofdstuk vier geeft inzicht hoe vanuit een ander programma gecontroleerd kan worden of de HDN software en een HDN certificaat geinstalleerd is. Hoofdstuk vijf geeft uitleg over het ophalen van de HDN bericht schema's welke nodig zijn voor het versturen van correcte HDN berichten. In hoofdstuk zes worden de parameterbestanden van de HDN software beschreven. Hoofdstuk zeven tenslotte geeft inzicht in de interface van de HDN software met overige programma's indien deze overige programma's niet direct functies uit de Wesly libraries aanroepen. 1.5 Definities HDN Hypotheken Data Netwerk Inkomende verbinding Een netwerkverbinding van de lokale computer met een andere computer in een netwerk waarbij de andere computer het initiatief heeft genomen om de verbinding op te zetten. (zie ook uitgaande verbinding) TCP/IP Transmission Control Protocol/Internet Protocol. Standaard protocollen voor netwerkcommunicatie.

Uitgaande verbinding Een netwerverbinding van de lokale computer met een andere computer in een netwerk waarbij de lokale computer het initiatief heeft genomen om de verbinding op te zetten. (zie ook inkomende verbinding) Windows Windows is een handelsmerk of een geregistreerd handelsmerk van Microsoft Corporation in de Verenigde Staten en andere landen.

Hoofdstuk 2 Algemene beschrijving 2.1 Overzicht 2.1.1 Functioneel De infrastructuur van HDN bestaat uit nodes die ondeling communiceren via het Internet. Functioneel gezien zijn deze nodes te verdelen over de volgende groepen: 1.Maatschappijen 2.Tussenpersonen 3.Intermediairketens 4.Service providers Maatschappijen Dit zijn organisaties die de hypotheek nemen. Hieronder vallen de banken en verzekeraars van Nederland, en buitenlandse spelers op de Nederlandse markt. Een maatschappij heeft haar koppeling met het HDN in eigen beheer, of ondergebracht bij een service provider. Tussenpersonen Dit zijn organisaties die direct contact hebben met de hypotheekgever. Er zijn individuele onafhankelijke tussenpersonen, organisaties van (onafhankelijke) tussenpersonen (zie ook Intermediairketens) en tussenpersonen die als loondienstadviseur gelieerd zijn aan een maatschappij. Intermediairketens Dit zijn organisaties van (onafhankelijke) tussenpersonen. Service providers Dit zijn organisaties die voor meerdere maatschappijen de koppeling met het HDN (en eventueel ook de afhandeling van de HDN berichten) verzorgen. 2.1.2 Technisch Technisch bestaat de infrastructuur uit Clients en Servers. Tussenpersonen hebben Clients, maatschappijen, intermediairketens en service providers hebben Servers. Het verschil tussen clients en servers is dat een client alleen verbinding kan maken met een server, en een server kan zowel zelf een uitgaande verbinding met andere server maken, als een inkomende verbinding van clients en servers accepteren en afhandelen. Een server dient dan ook geinstalleerd te worden op een computer met een vast IP adres welke vanaf het Internet te benaderen is. Tussenpersonen en Intermediairketens communiceren dan ook direct (of via Service providers) met een of meerdere Maatschappijen. Maatschappijen kunnen dus zelf geen communicatie met Tussenpersonen opzetten, wel met Intermediairketens en andere Maatschappijen. In figuur 2.1 worden de communcatiestromen aangegeven met pijlen. De richting van de pijl geeft aan wie het initiatief neem (het begin van de pijl) en wie de dienst levert (het einde van de pijl), de kleur geeft het type bericht (een aanvraag of een retourbericht). In het figuur wordt alleen de communicatie met een maatschappij getoond. Op de plek van de maatschappij kan ook een service provider gedacht worden. 8

Figuur 2.1 2.2 De HDN Client 2.2.1 De componenten van een HDN Client De software voor clients bestaat uit de volgende componenten: Component inca.exe weslycln.dll webcert.exe getnodenr.exe certfunc.dll hdnconnecttest.exe getarchive.exe Omschrijving Het programma voor het oppakken van uitgaande berichten in de outdir en het plaatsen van ontvangen berichten in de indir. De library waarmee verbinding met een server opgezet kan worden om berichten te versturen en te ontvangen Het programma waarmee certificaten aangevraagd, vernieuwd en ingetrokken kunnen worden. Het programma dat het nodenummer van de client toont. De library die verschillende certificaat gerelateerde functies bevat Een testprogramma voor het opsporen van problemen. Hiermee kan gecontroleerd worden of een server wel bereikbaar is. Het programma waarmee eerder verzonden berichten uit het centrale archief opgevraagd kunnen worden. Er zijn nog veel meer componenten die bij de client software horen, echter deze kunnen niet direct door derden gebruikt worden. De beschrijving van deze componenten valt buiten de scoop van dit document. Figuur 2.2 geeft een overzicht van de samenhang van de componenten. Hierin is ook te zien dat inca.exe via een indir/outdir communiceert met het hypotheek-adviespakket. 9

Figuur 2.2 Het HDN certificaat kan aangevraagd of vernieuwd worden met het programma webcert.exe. Het HDN aansluitnummer is opgeslagen in het certificaat en kan worden opgevraagd met het programma getnodenr.exe. 2.2.2 Integratie van de HDN Client met het hypotheek-adviespakket De client communicatie software library weslycln.dll kan direct door het adviespakket aangeroepen worden. Hiervoor zal het volgende gedaan moeten worden: De scheduler-file van de HDN software zal aangepast moeten worden. Standaard wordt bij de HDN software een zogenaamde taskscheduler geïnstalleerd. Deze start eens in de 5 minuten het programma inca.exe. De configuratie hiervoor staat in het bestand: <gedeelde componenten gegevensdirectory>\scheduler\crondir\crontab_hdn Dit bestand bevat de volgende regels: # HDN Client crontab */5 * * * * <HDN installatiedirectory>\bin\inca.exe De tweede regel (de regel met inca.exe) moet in commentaar gezet worden (door de regel te laten beginnen met een '#') of verwijderd worden. 10

Het hypotheek-adviespakket roept zelf de functies in weslycln.dll aan. In plaats van het klaarzetten van de te versturen berichten in de outdir en het verwerken van ontvangen berichten in de indir, dient het hypotheek-adviespakket zelf de DLL te laden en de functies hdnsend en hdnreceivefrom aan te roepen. Figuur 2.3 toont het verschil tussen links het gebruik van de in- en outdir en rechts het direct aanroepen van de functies uit weslycln.dll. In hoofdstuk 3 worden de functies uitgelegd en wordt voorbeeld code gegeven. Figuur 2.3 2.2.3 Integratie van synchrone communicatie. Een hypotheek-adviespakket kan gebruik maken van synchrone communicatie door de weslycln.dll direct aan te roepen. Dit gaat op dezelfde manier zoals beschreven in hoofdstuk 2.2.2. De weslycln.dll bevat 2 API functies voor synchrone communicatie, namelijk: hdnsyncgetendpoint hdnsyncsend Bovenstaande functies vormen de basis voor berichtenverkeer waarbij vraag en antwoord in een synchrone sessie worden uitgewisseld. In hoofdstuk 3 worden deze functies beschreven. 11

12

2.3 De HDN Server 2.3.1 De componenten van een HDN Server De software voor servers bestaat uit de volgende componenten: Component mash.exe smash.exe weslysrv.dll opa.exe inca.exe weslycln.dll webcert.exe getnodenr.exe hdnconnecttest.exe hdnserverconfig.exe Omschrijving Standaard server software waarbij ontvangen HDN berichten in een indir geplaatst worden en te versturen HDN berichten uit een outdir worden gehaald. Standaard server software voor het afhandelen van HDN berichten die middels synchrone communicatie zijn verstuurd. Binnenkomende berichten worden direct doorgestuurd naar een webservice. Smash.exe stuurt het retourbericht van de webservice terug naar de afzender. De library waarin de webservice functionaliteit van de HDN server is ingebouwd. Het programma dat te versturen HDN berichten scheidt in berichten die bestemd zijn voor een Client en berichten die bestemd zijn voor een Server. Berichten die bestemd zijn voor een Client komen in de outdir voor mash.exe, berichten die bestemd zijn voor een Server komen in de outdir voor inca.exe. Het programma voor het oppakken van uitgaande berichten in de outdir en het plaatsen van ontvangen berichten in de indir. De library waarmee verbinding met een server opgezet kan worden om berichten te versturen en te ontvangen. Het programma waarmee certificaat aangevraagd, vernieuwd en ingetrokken kunnen worden. Het programma dat het nodenummer van de client toont. Een testprogramma voor het opsporen van problemen. Hiermee kan gecontroleerd worden of een server wel bereikbaar is. Het programma waarmee de configuratie voor een server opgegeven kan worden. Er zijn nog veel meer componenten die bij de server software horen, echter deze kunnen niet direct door derden gebruikt worden. De beschrijving van deze componenten valt buiten de scoop van dit document. Figuur 2.4 geeft een overzicht van de samenhang van de componenten. Hierin is ook te zien dat opa.exe de outdir van het back-office pakket afhandelt en dat mash.exe de indir van het back-office pakket vult. 13

Figuur 2.4 Alhoewel niet in het figuur ingetekend, gebruikt ook de HDN Server software een HDN certificaat. Het HDN certificaat kan aangevraagd of vernieuwd worden met het programma webcert.exe. Het HDN aansluitnummer is opgeslagen in het certificaat en kan worden opgevraagd met het programma getnodenr.exe. Een ander programma van de HDN server software is het programma hdnserverconfig.exe. Hierin kan opgegeven worden het IP-adres en het TCP poortnummer van de dienst. Let op: Als de HDN server achter een router (of firewall of proxy) staat en er van network-addresstranslation (NAT) gebruik gemaakt wordt, let er dan op dat dan niet het fysieke adres van de server maar het publieke IP adres van de router ingevuld wordt. Tevens dient de router het verkeer dat op de opgegeven poort binnenkomt, te routeren naar de HDN server. 2.3.2 Integratie van de HDN Server met back-office software De webservice library weslysrv.dll en de client communicatiesoftware library weslycln.dll kunnen direct door software van de maatschappij aangeroepen worden. Hiervoor zal het volgende gedaan moeten worden: 14

De scheduler-file van de HDN software zal aangepast moeten worden. Standaard wordt bij de HDN software een zogenaamde taskscheduler geïnstalleerd. Deze start elke minuut het programma opa.exe en eens in de 5 minuten het programma inca.exe. De configuratie hiervoor staat in het bestand: <gedeelde componenten gegevensdirectory>\scheduler\crondir\crontab_hdn Dit bestand bevat onder andere de volgende regels: # HDN Server crontab */5 * * * * <HDN installatiedirectory>\bin\inca.exe --put */1 * * * * <HDN installatiedirectory>\bin\opa.exe Deze regels moeten in commentaar gezet worden (door de regel te laten beginnen met een '#') of verwijderd worden. De Windows service "HDN Service (MASH)" stoppen en uitschakelen Het programma mash.exe zal vervangen worden door de maatschappij software. Figuur 2.5 laat dit zien. Links de standaard situatie, rechts de directe koppeling met de backoffice. Aangezien mash.exe als Windows service gestart wordt, dient deze service uitgeschakeld te worden. De backoffice software roept zelf de functies in weslysrv.dll en weslycln.dll aan. In plaats van het klaarzetten van de te versturen berichten in de outdir en het verwerken van ontvangen berichten in de indir, dient de backoffice software zelf de DLL's te laden en de functies hdnrunserver en hdnsend aan te roepen (zie ook figuur 2.3). De interface van Wesly Client is uitgelegd in [HDN REF-001]. In het volgende hoofdstuk wordt de interface van Wesly Server uitgelegd. Figuur 2.5 15

Hoofdstuk 3 De Wesly libraries 3.1 De library gebruiken Om de DLL in een programma te gebruiken, dient het programma de DLL te laden. Dit kan met de functie LoadLibrary() uit de Microsoft Platform SDK (zie: http://msdn.microsoft.com/library/enus/dllproc/base/loadlibrary.asp). Vervolgens moet het adres van de gewenste functies opgehaald worden. Dit kan met de functie GetProcAddress() (zie: http://msdn.microsoft.com/library/enus/dllproc/base/getprocaddress.asp). Om een functie daadwerkelijk te kunnen uitvoeren dient de functiepointer het juiste type te hebben. In paragrafen 3.2.2 en 3.3.2 worden de prototypes van de exportfuncties gegeven. Let op: De Wesly libraries maken gebruik van diverse andere componenten, die allemaal in de HDN\bin directory staan. Als de software die de Wesly library aanroept, niet in de HDN\bin directory staat, moet er voor gezorgd worden dat de HDN\bin directory in het zoekpath van de aanroepende applicatie is opgenomen. Deze beperking ligt niet aan de applicatie of de componenten in de HDN\bin directory, maar hoort bij de standaard Windows eigenschappen. Zie hiervoor het Microsoft MSDN artikel "Search Path by Windows to locate a DLL" (http://msdn2.microsoft.com/en-us/library/7d83bc18.aspx) 3.2 De Wesly Client library 3.2.1 De functies De library exporteert de volgende functies: hdngetendpoint hdnsyncgetendpoint hdngetnodenumber hdniscertactive hdnsend hdnsyncsend hdnreceivefrom hdnsetlog hdnvalidate hdnvalidateex In de volgende paragrafen worden deze functies uitgelegd. 3.2.2 Functie prototypes De volgende functietypes zijn voor de Wesly Client library gedefineerd. Listing 3.1: typedef long ( stdcall * FT_HDNSEND)( const char * lpszfilename ); typedef long ( stdcall * FT_HDNRECVFROM)( const char * lpcsznode, const char * lpszfilename, long * plnbrmsgs ); 16

3.2.3 Voorbeelden Bij de functies zijn voorbeelden gegeven. Alle voorbeeld programma's zijn geschreven in C en getest met Microsoft Visual C/C++ 6.0. De voorbeeldprogramma's zijn gecompileerd met de volgende instellingen: Compiler instellingen: /nologo /MD /W3 /Gm /GX /ZI /Od /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /Fo"Debug/" /Fd"Debug/" /FD /GZ /c Linker instellingen: kernel32.lib /nologo /subsystem:console /incremental:yes /pdb:"debug/hdntest.pdb" /debug /machine:i386 /out:"debug/hdntest.exe" /pdbtype:sept 17

3.2.4 hdngetendpoint hdngetendpoint Syntax: Parameters: int stdcall hdngetendpoint( const char * lpcsznode, char * lpbufendpoint, size_t * pubufsize) lpcsznode lpbufendpoint Het HDN aansluitnummer van een HDN node Buffer waarin de URL opgeslagen wordt Beschrijving: Return: pubufsize Pointer naar de omvang van de meegegeven buffer. Indien blijkt dat het buffer te klein is wordt de benodigde omvang (inclusief nul-byte) in *pubufsize teruggegeven. Bepaalt het endpoint voor de opgegeven node. Een endpoint is een URL die gebruikt kan worden om berichten naar de node toe te sturen. 0 indien het HDN aansluitnummer bekend is en een (eigen) HDN server heeft. In het opgegeven buffer wordt de URL met hostname en port teruggegeven. ERR_NO_ENDPOINT 1007 ERR_NOT_FOUND 1006 Het HDN aansluitnummer heeft geen endpoint. Dit houdt in dat er naar dit nummer geen berichten verstuurd kunnen worden. Het HDN aansluitnummer is geen correct aansluitnummer. In het HDN is er geen node met het opgegeven aansluitnummer. 18

3.2.5 hdnsyncgetendpoint hdnsyncgetendpoint Syntax: Parameters: int stdcall hdnsyncgetendpoint( const char * lpcsznode, char * lpbufendpoint, size_t * pubufsize) lpcsznode lpbufendpoint Het HDN aansluitnummer van een HDN node Buffer waarin de URL opgeslagen wordt Beschrijving: Return: pubufsize Pointer naar de omvang van de meegegeven buffer. Indien blijkt dat het buffer te klein is wordt de benodigde omvang (inclusief nul-byte) in *pubufsize teruggegeven. Bepaalt het endpoint voor synchrone communicatie van de opgegeven node. Een endpoint is een URL die gebruikt kan worden om berichten synchroon naar de node toe te sturen. 0 Indien het HDN aansluitnummer bekend is, een (eigen) HDN server heeft en geconfigureerd is voor synchrone communicatie. In het opgegeven buffer wordt de URL met hostname en port teruggegeven. ERR_NO_ENDPOINT 1007 ERR_NOT_FOUND 1006 Het HDN aansluitnummer heeft geen endpoint. Dit houdt in dat er naar dit nummer geen berichten verstuurd kunnen worden. Het HDN aansluitnummer is geen correct aansluitnummer. In het HDN is er geen node met het opgegeven aansluitnummer. 19

3.2.6 hdngetnodenumber hdngetnodenumber Syntax: Parameters: Beschrijving: Return: int stdcall hdngetnodenumber(char * lpbufnodenumber, size_t * pubufsize) lpbufnodenumber pubufsize Het buffer waarin het nodenummer opgeslagen wordt. Pointer naar de omvang van de meegegeven buffer. Indien blijkt dat het buffer te klein is wordt de benodigde omvang (inclusief nul-byte) in *pubufsize teruggegeven. Leest uit het HDN certificaat het HDN nodenummer. Indien er geen certificaat aangevraagd is dient deze eerst aangevraagd te worden. 0 indien het nodenummer bekend is. In het opgegeven buffer wordt het nodenummer teruggegeven. ERR_MORE_DATA 1005 ERR_NO_CERTIFICATE 1020 indien het opgegeven buffer te klein is. In *pubufsize wordt de benodigde omvang teruggegeven. indien geen certificaat is ge-installeerd. 20

3.2.7 hdniscertactive hdniscertactive Syntax: Beschrijving: Return: long stdcall hdniscertactive(void) Controleer of er een actief certificaat is. Alleen als er een actief certificaat is kunnen er berichten via het netwerk verstuurd en ontvangen worden. 0 Het certificaat is actief. ERR_CERT_NOT_ACTIVE 1030 Er is een certificaat aangevraagd, echter deze is nog niet geactiveerd ERR_NO_CERTIFICATE 1020 Er is geen certificaat. De gebruiker moet nog een certificaat aanvragen 21

3.2.8 hdnsend hdnsend Syntax: long stdcall hdnsend(const char * lpszfilename, const char * lpszvxfilename ) Parameters: Beschrijving: Return: lpszfilename lpszvxfilename De bestandsnaam van het te versturen HDN bericht. De naam van een bestand waarin de Validate-module het VX bericht met de gevonden fouten kan schrijven. hdnsend zal zorgen dat het opgegeven bericht verstuurd wordt naar de opgegeven ontvanger. Het nodenummer van de ontvanger wordt uit het bericht gehaald. De functie zorgt eerst dat het bericht gevalideerd wordt. Hiervoor wordt de functie hdnvalidate() aangeroepen. Is het bericht correct dan zal over het bericht een digitale handtekening gezet worden en worden versleuteld alvorens de communicatie wordt opgezet. De functie zal controleren dat de ontvanger het bericht correct heeft ontvangen en geaccepteerd. De ontvanger zal het bericht alleen accepteren indien de ontvanger het bericht kan ontsleutelen en gecontroleerd heeft dat de digitale handtekening correct is. 0 Bericht is verzonden. Er zijn geen fouten opgetreden ERR_NO_ENDPOINT 1007 ERR_NOT_FOUND 1006 ERR_NO_ENTRY 1009 ERR_FILE_OPEN 1011 ERR_FILE_READ 1012 ERR_ENCRYPT_FAILURE 1010 ERR_SIGNATURE_FAILURE 1002 ERR_HTPPARSE 1026 ERR_VALIDATE_NO_SCHEMA 1031 ERR_VALIDATE_NO_XML 1032 ERR_VALIDATE_WRONG_HDR 1033 ERR_VALIDATE_FATAL_ERROR 1034 ERR_VALIDATE_UNRECOVERABLE 1035 Het HDN aansluitnummer dat in het bericht onder OntvangerNrHDN staat, heeft geen endpoint. Dit houdt in dat er naar dit nummer geen berichten verstuurd kunnen worden. Het HDN aansluitnummer dat in het bericht onder OntvangerNrHDN staat, is geen correct aansluitnummer. In het HDN is er geen node met het opgegeven aansluitnummer. Het opgegeven bestand bestaat niet. Het opgegeven bestand kan niet geopend worden. Het opgegeven bestand kan niet gelezen worden. Het versleutelen van het bericht is mislukt. Er kan geen digitale handtekening gezet worden. Zorg dat er een geldig HDN certificaat is aangevraagd. Het antwoord van de remote node wordt niet begrepen door de software. Er zijn geen HDN schema's gevonden waartegen gevalideer kan worden. Het bericht mag niet verzonden worden. Het te valideren bericht is geen XML bestand. Het HDN bericht heeft geen of een incorrecte Header entiteit. Het bericht kan niet gevalideerd worden. Het HDN bericht kan niet gevalideerd worden. De validate geeft een fatale fout. Tijdens het valideren van het HDN bericht zijn er fouten gevonden die niet in een popup te herstellen zijn. 22

hdnsend ERR_VALIDATE_RECOVERABLE 1036 ERR_VALIDATE_OLD_MSG_VERSION 1038 Tijdens het valideren van het HDN bericht zijn er fouten gevonden die door de eindgebruiker een popup te herstellen zijn. Er is een bericht met een berichtversie lager dan 6.0 ter verzending aangeboden. Deze berichten kunnen niet gevalideerd worden, en mogen daarom niet via het HDN netwerk worden verstuurd. Voorbeeld: ERR_WRONG_SENDER 1039 #include <windows.h> #include <stdio.h> Er is een bericht ter verzending aangeboden, waarbij het veld HDNVerzenderNr in de header niet overeenkomt met het lokale HDN aansluitnummer. Het bericht wordt niet verzonden. typedef long ( stdcall * FT_HDNSEND )( const char * lpszfilename, const char * lpszvxfilename ); int main( int argc, char ** argv ) HMODULE hlib; FT_HDNSEND fphdnsend; long rc; if( argc < 2 ) fprintf(stderr, "Usage: hdnsendtest filename.\n"); return 1; hlib = LoadLibrary("weslycln.dll"); if( hlib == NULL ) DWORD dwerror = GetLastError(); fprintf(stderr, "Unable to load dynamic library " "'weslycln.dll'. error: %lu\n", dwerror); return 1; fphdnsend = (FT_HDNSEND) GetProcAddress(hLib, "hdnsend"); if( fphdnsend == NULL ) DWORD dwerror = GetLastError(); fprintf(stderr, "Unable to locate function 'hdnsend' " "within the library 'weslycln.dll'. error: %lu\n", dwerror); FreeLibrary(hLib); return 2; rc = fphdnsend(argv[1],"vxfile"); 23

hdnsend if (rc == 0) printf("ok!\n"); else printf("fout bij het verzenden van '%s'\nfoutcode: %ld\n", argv[1], rc); FreeLibrary(hLib); return rc; 24

3.2.9 hdnsyncsend hdnsyncsend Syntax: long stdcall hdnsyncsend(const char * lpszfilein, const char * lpszfileout, const char * lpszvxfilename ) Parameters: lpszfilein De bestandsnaam van het te versturen HDN bericht. lpszfileout De naam van een bestand waarin het retourbericht van de synchrone sessie kan worden geschreven. Beschrijving: Return: lpszvxfilename De naam van een bestand waarin de Validate-module het VX bericht met de gevonden fouten kan schrijven. hdnsyncsend zal zorgen dat het opgegeven bericht verstuurd wordt naar de opgegeven ontvanger. Het nodenummer van de ontvanger wordt uit het bericht gehaald. De functie zorgt eerst dat het bericht gevalideerd wordt. Hiervoor wordt de functie hdnvalidate() aangeroepen. Is het bericht correct dan zal over het bericht een digitale handtekening gezet worden en worden versleuteld alvorens de communicatie wordt opgezet. De functie zal controleren dat de ontvanger het bericht correct heeft ontvangen en geaccepteerd. De ontvanger zal het bericht alleen accepteren indien de ontvanger het bericht kan ontsleutelen en gecontroleerd heeft dat de digitale handtekening correct is. 0 Bericht is verzonden. Er zijn geen fouten opgetreden ERR_NO_ENDPOINT 1007 ERR_NOT_FOUND 1006 ERR_NO_ENTRY 1009 ERR_FILE_OPEN 1011 ERR_FILE_READ 1012 ERR_ENCRYPT_FAILURE 1010 ERR_SIGNATURE_FAILURE 1002 ERR_HTPPARSE 1026 ERR_VALIDATE_NO_SCHEMA 1031 ERR_VALIDATE_NO_XML 1032 ERR_VALIDATE_WRONG_HDR 1033 ERR_VALIDATE_FATAL_ERROR 1034 Het HDN aansluitnummer dat in het bericht onder OntvangerNrHDN staat, heeft geen endpoint. Dit houdt in dat er naar dit nummer geen berichten verstuurd kunnen worden. Het HDN aansluitnummer dat in het bericht onder OntvangerNrHDN staat, is geen correct aansluitnummer. In het HDN is er geen node met het opgegeven aansluitnummer. Het opgegeven bestand bestaat niet. Het opgegeven bestand kan niet geopend worden. Het opgegeven bestand kan niet gelezen worden. Het versleutelen van het bericht is mislukt. Er kan geen digitale handtekening gezet worden. Zorg dat er een geldig HDN certificaat is aangevraagd. Het antwoord van de remote node wordt niet begrepen door de software. Er zijn geen HDN schema's gevonden waartegen gevalideer kan worden. Het bericht mag niet verzonden worden. Het te valideren bericht is geen XML bestand. Het HDN bericht heeft geen of een incorrecte Header entiteit. Het bericht kan niet gevalideerd worden. Het HDN bericht kan niet gevalideerd worden. De validate geeft een fatale fout. 25

hdnsyncsend ERR_VALIDATE_UNRECOVERABLE 1035 ERR_VALIDATE_RECOVERABLE 1036 ERR_VALIDATE_OLD_MSG_VERSION 1038 Tijdens het valideren van het HDN bericht zijn er fouten gevonden die niet in een popup te herstellen zijn. Tijdens het valideren van het HDN bericht zijn er fouten gevonden die door de eindgebruiker een popup te herstellen zijn. Er is een bericht met een berichtversie lager dan 6.0 ter verzending aangeboden. Deze berichten kunnen niet gevalideerd worden, en mogen daarom niet via het HDN netwerk worden verstuurd. Voorbeeld: ERR_WRONG_SENDER 1039 #include <windows.h> #include <stdio.h> Er is een bericht ter verzending aangeboden, waarbij het veld HDNVerzenderNr in de header niet overeenkomt met het lokale HDN aansluitnummer. Het bericht wordt niet verzonden. typedef long ( stdcall * FT_HDNSYNCSEND )( const char * lpszfilein, const char * lpszfileout, const char * lpszvxfilename ); int main( int argc, char ** argv ) HMODULE hlib; FT_HDNSYNCSEND fphdnsyncsend; long rc; if( argc < 3 ) fprintf(stderr, "Usage: hdnsendtest " "<input filename> <output filename>.\n"); return 1; hlib = LoadLibrary("weslycln.dll"); if( hlib == NULL ) DWORD dwerror = GetLastError(); fprintf(stderr, "Unable to load dynamic library "'weslycln.dll'. error: %lu\n", dwerror); return 1; fphdnsyncsend = (FT_HDNSYNCSEND) GetProcAddress(hLib, "hdnsyncsend"); if( fphdnsyncsend == NULL ) DWORD dwerror = GetLastError(); fprintf(stderr, "Unable to locate function 'hdnsyncsend' " "within the library 'weslycln.dll'. error: %lu\n", dwerror); FreeLibrary(hLib); 26