ESDI. WebService. Wersja 1.2. Strona 1

Podobne dokumenty
Tworzenie i wykorzystanie usług sieciowych

Instrukcja dla użytkowników Windows Vista Certyfikat Certum Basic ID

Certyfikat Certum Basic ID. Instrukcja dla użytkowników Windows Vista. wersja 1.3 UNIZETO TECHNOLOGIES SA

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Spis treści INTERFEJS (WEBSERVICES) - DOKUMENTACJA TECHNICZNA 1

DPDInfoServices. Specyfikacja biznesowa. Version DPD Polska Sp. z O.O. Warszawa

Instrukcja generowania certyfikatu PFRON i podpisywania dokumentów aplikacji SODiR w technologii JS/PKCS 12

Ministerstwo Finansów

PUE ZUS Wysyłka elektronicznych zapytan. Instrukcja wysyłki zapytań do ZUZ-PUE za pomocą aplikacji Komornik SQL

Zaawansowane aplikacje internetowe - laboratorium

Ekspert radzi. mechanizm w enova, umożliwiający wskazanie domyślnej drukarki dla danego stanowiska i wydruku. Strona 1 z 8. Ekspert radzi.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Bezpieczne uruchamianie apletów wg

Specyfikacja techniczna. mprofi Interfejs API

Biuletyn techniczny. Eksport i import przelewów za pomocą usługi sieciowej

Zaawansowane aplikacje WWW - laboratorium

Rys Rejestracja certyfikatu kwalifikowanego w programie Płatnik

Outlook Instrukcja podpisywania i szyfrowania wiadomości certyfikatem niekwalifikowanym.

Autoryzacja zleceń z użyciem aplikacji Java Web Start "Pocztowy24Podpis"

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

PUE ZUS Wysyłka elektronicznych zapytan. Instrukcja wysyłki zapytań do ZUZ-PUE za pomocą aplikacji Komornik SQL

Gatesms.eu Mobilne Rozwiązania dla biznesu

Specyfikacja API 1.0. Specyfikacja kontroli Konta systemu CashBill z wykorzystaniem API opartego na REST

Opis aktualizacji programu Kancelaria Komornika

Integracja Comarch e-sprawozdania

Aplikacje internetowe i rozproszone - laboratorium

WebNotarius. Specyfikacja techniczna komunikacji z usługą WebNotarius. wersja 1.1

Sprawdzenie stanu opłacenia pakietu Zlecenie sprawdzenia stanu opłacenia... 23

Podręcznik użytkownika. Certification Request Services Wersja dokumentacji Asseco Data Systems S.A.-

Instrukcja integratora - obsługa dużych plików w epuap2

Zaawansowane aplikacje internetowe laboratorium

Instrukcja pobrania i instalacji. certyfikatu Microsoft Code Signing. wersja 1.4

Db4o obiektowa baza danych wersja.net

Laboratorium 10 - Web Services

POLITECHNIKA POZNAŃSKA

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Korzystanie z Certyfikatów CC Signet w programie MS Outlook 98

1. Opis ogólny. 2. Opis techniczny. 3. Wymagania techniczne

Programy LeftHand - Obsługa plików JPK. Luty 2017

Instrukcja obsługi certyfikatów w programie pocztowym MS Outlook Express 5.x/6.x

Instalacja certyfikatu

Dokumentacja SMS przez FTP

Katalog książek cz. 3: Web Service

Kielce, dnia roku. HB Technology Hubert Szczukiewicz. ul. Kujawska 26 / Kielce

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym PrestaShop (plugin dostępny w wersji ecommerce)

Instrukcja generowania żądania CSR SOW WERSJA 1.6

Instrukcja aktywacji i instalacji Certum Code Signing

Integracja Obieg Dokumentów - GiS Spis treści

Aplikacja do podpisu cyfrowego npodpis

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

DESlock+ szybki start

Dokument opisuje sposób postępowania prowadzący do wysłania deklaracji VAT, PIT lub CIT drogą elektroniczną za pomocą funkcji systemu ADA modułu FK.

Instrukcja wgrywania Certyfikatu Klienta do przeglądarki Mozilla Firefox. System Bankowości Internetowej KIRI BS 2012

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Certyfikat niekwalifikowany zaufany Certum Silver. Instalacja i użytkowanie pod Windows Vista. wersja 1.0 UNIZETO TECHNOLOGIES SA

KURIER BY CTI. Instrukcja do programu DATA Informatycznej Zygmunt Wilder w Gliwicach WERSJA mgr Katarzyna Wilder DLA DPD

Kalipso wywiady środowiskowe

INSTRUKCJA UŻYTKOWNIKA Podpis cyfrowy ISO 9001:2008 Dokument: Wydanie: Podpis cyfrowy. Spis treści... 1

Zaawansowane aplikacje internetowe - laboratorium Web Services (część 1).

Opis konfiguracji i wysyłki wniosków EKW w aplikacji Komornik SQL-VAT

Specyfikacja HTTP API. Wersja 1.6

Opis przykładowego programu realizującego komunikację z systemem epuap wykorzystując interfejs komunikacyjny "doręczyciel"

Wysyłka wniosko w ZUS - EKS. Instrukcja użytkownika aplikacji Wysyłka wniosków ZUS EKS

INSTRUKCJA obsługi certyfikatów

Instrukcja implementacji sterownika wirtualnego portu szeregowego dla systemu Android. Opracowanie: Elzab Soft sp. z o.o.

Podręcznik użytkownika. procertum SmartSign 3.0 Wersja dokumentacji Unizeto Technologies SA -

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

Programy LeftHand - Obsługa plików JPK. Wrzesień 2016

System Symfonia e-dokumenty

Opis zmian funkcjonalności platformy E-GIODO wprowadzających możliwość podpisania wniosku bezpośrednio w oknie przeglądarki.

Portal SRG BFG. Instrukcja korzystania z Portalu SRG BFG

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Forum Client - Spring in Swing

Kancelaria Prawna.WEB - POMOC

Certyfikat niekwalifikowany zaufany Certum Silver. Instrukcja dla uŝytkowników Windows Vista. wersja 1.1 UNIZETO TECHNOLOGIES SA

Produkcja by CTI. Proces instalacji, ważne informacje oraz konfiguracja

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Instrukcja obsługi DHL KONWERTER 1.6

DOKUMENTACJA IMPLEMENTACJI MECHANIZMÓW OBSŁUGI AHMES SMS (soap)

PWI Instrukcja użytkownika

PANEL ADMINISTRACYJNY SPRZEDAWCY SZYBKI START

Dostęp bezprzewodowy do Uczelnianej Sieci Komputerowej Politechniki Poznańskiej Instrukcja dla studentów Politechniki Poznańskiej

Instalowanie certyfikatów celem obsługi pracy urządzenia SIMOCODE pro V PN z poziomu przeglądarki internetowej w systemie Android

INSTRUKCJA UŻYTKOWNIKA Podpis cyfrowy ISO 9001:2008 Dokument: Wydanie: Podpis cyfrowy

Instrukcja. importu dokumentów. z programu Fakt do programu Płatnik. oraz. przesyłania danych do ZUS. przy pomocy programu Płatnik

ezwroty WebApi Dokumentacja techniczna

ELEKTRONICZNY NADAWCA. OPIS WebAPI Wersja 0.14, Opis WebAPI udostępnianego przez program Elektroniczny Nadawca

ESDI/WEB Instrukcja użytkownika

Instrukcja pobrania i instalacji. certyfikatu niekwalifikowanego na komputerze lub karcie kryptograficznej. wersja 1.4 UNIZETO TECHNOLOGIES SA

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym PrestaShop (plugin dostępny w wersji ecommerce)

Dokumentacja API Stacja z Paczką ver. 2.14

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Instrukcja pobrania i instalacji certyfikatu niekwalifikowanego na komputerze lub karcie. Instrukcja dla użytkowników. wersja 1.4

ESDI/WEB Instrukcja użytkownika

Opis modułu pl.id w programie Komornik SQL-VAT

Moduł integrujący serwis Korporacji Kurierskiej z programem WF-MAG Instrukcja użytkowania

Instrukcja obsługi Multiconverter 2.0

ELETRONICZNA WYMIANA DANYCH

Transkrypt:

ESDI WebService Wersja 1.2 Strona 1

Spis treści 1. Informacje ogólne... 4 2. Komunikacja... 6 3. Format komunikatu ESDK dla ESDI WebService... 7 4. Podpis CAdES... 8 5. Funkcje API - formaty komunikatów... 10 6. Przykłady wywołania usług za pomocą klienta.net... 20 Strona 2

Historia zmian Wersja Data modyfikacji Autor zmian Szczegóły 1.0 2014-05-05 KDPW Utworzenie dokumentu 1.1 2014-08-21 KDPW Aktualizacja dokumentu 1.2 2016-04-25 KDPW Aktualizacja procesu tworzenia nagłówka ESDK Strona 3

1. Informacje ogólne Usługa ESDI WebService jest rozwiązaniem umożliwiającym komunikację pomiędzy systemami informatycznymi Grupy KDPW a systemami uczestników rynku za pomocą usług sieciowych (web-services). Dzięki ESDI WebServices możliwa jest efektywna wymiana komunikatów ESDK opatrzonych podpisem elektronicznym poprzez szyfrowany kanał HTTPS. ESDI WebServices służy tylko do przesyłania/odbierania komunikatów systemowych z KDPW/KDPW_CCP. Za pomocą tego trybu (A2A) nie będą wysyłane/odbierane inne komunikaty np. uchwały zarządu, ONP i inna korespondencja. Proces podpisywania i wymiany komunikatów ESDK może być zautomatyzowany poprzez stworzenie odpowiedniego oprogramowania działającego w środowisku użytkownika i łączącego się do usługi ESDI WebService. Proces tworzenia komunikatu ESDK dla ESDI WebService wynika z dokumentu DokumentacjaESDK dostępnego pod adresem: http://www.kdpw.pl/pl/kdpw_stream/system/documents/systemy/esdk/dokumentacjaesdk.pdf i został rozszerzony o wydzielenie z pola Obszar zarezerwowany pola Środowisko o długości 4 znaków (dla środowiska testowego jest to TSTA lub TSTB, dla środowiska produkcyjnego PRD ). Szczegółowy opis formatu komunikatu ESDK dla ESDI WebService znajduje się w rozdziale 3. Aplikacja użytkownika uwierzytelnia się za pomocą atrybutów bezpieczeństwa wydanych w pliku p12 dostarczonym przez KDPW. Wszystkie pliki przesyłane poprzez ESDI WebService są podpisywane elektronicznie. Użytkownicy mogą wykorzystać do generowania podpisów wysyłanych komunikatów ESDK mechanizm realizowany przez bibliotekę BouncyCastle.Crypto.dll lub wykorzystać tożsame rozwiązanie innych firm. Podpis generowany jest w formacie CAdES z wykorzystaniem certyfikatu wydanego przez KDPW w pliku p12. Bibliotekę dla języka C# można pobrać ze strony: http://www.bouncycastle.org/csharp/ Bibliotekę dla języka Java można pobrać ze strony: http://www.bouncycastle.org/latest_releases.html Licencja na używanie biblioteki BouncyCastle.Crypto.dll znajduje się na stronie http://www.bouncycastle.org/licence.html http://www.bouncycastle.org/csharp/licence.html Szczegóły licencji MIT X11: http://opensource.org/licenses/mit-license.php Strona 4

Wszystkie działania użytkowników w ramach wywoływania komunikatów web-services są rejestrowane. Strona 5

2. Komunikacja Wymiana komunikatów pomiędzy KDPW S.A. a uczestnikami rynku w usłudze ESDI WebService odbywa się przez wymianę komunikatów XML przy wykorzystaniu technologii webservices. Całość komunikacji jest zabezpieczona protokołem TLS. Usługa ESDI WebService dostępna jest pod adresem: https://esdi.kdpw.pl/api/esdiservice.asmx - środowisko produkcyjne https://esditst.kdpw.pl/api/esdiservice.asmx - środowisko testowe Pierwszym krokiem do nawiązania połączenia jest zawsze inicjacja bezpiecznego tunelu komunikacji (TLS). Po zestawieniu kanału, wewnątrz niego przekazywane są żądania SOAP. Do zestawienia połączenia niezbędny jest certyfikat w pliku p12 wydany przez KDPW. Strona 6

3. Format komunikatu ESDK dla ESDI WebService Nazwa pola Długość Typ Numer komunikatu 9 N Data 10 A Godzina 8 A ID Adresata 10 A ID Nadawcy 10 A Typ komunikatu 24 A Podtyp komunikatu 4 A Środowisko 4 A Obszar zarezerwowany 16 A Długość danych 8 N Dane Długość danych B Długość podpisu elektronicznego 8 N Podpis elektroniczny Długość podpisu elektronicznego B Typy pól: A znakowe B - binarne N numeryczne Strona 7

4. Podpis CAdES Przesyłane komunikaty ESDK, w celu zapewnienia integralności ich treści, opatrzone są podpisem cyfrowym. Każdy przekazywany komunikat ESDK musi zawierać podpis treści komunikatu. Podpisy są wykonywane przy użyciu certyfikatów autoryzacyjnych wydanych przez KDPW w pliku p12. Poniższy opis przedstawia proces tworzenia podpisu cyfrowego komunikatu ESDK. Proces może być wykonywany przy użyciu biblioteki BouncyCastle.Crypto.dll lub tożsamego rozwiązania innych firm. Dla wygenerowania podpisu cyfrowego, konieczna jest możliwość odczytu klucza prywatnego z pliku p12 wydanego przez KDPW. Przykład odczytu certyfikatu z pliku i przekazanie go do procedury generującej podpis w języku C#: X509Certificate2 x509cert = new X509Certificate2(certPath, pass, X509KeyStorageFlags.Exportable X509KeyStorageFlags.PersistKeySet); certpatch ścieżka do pliku p12 pass hasło do certyfikatu Przykład w języku C# funkcji generującej podpis z wykorzystaniem pliku p12: datatosign tablica bajtów, dla której ma zostać wygenerowany podpis x509cert certyfikat użyty do wygenerowania podpisu using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography.X509Certificates; using System.Collections; public static byte[] SignData(byte[] datatosign, X509Certificate2 x509cert) { Org.BouncyCastle.X509.X509Certificate cert = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(x509Cert); Org.BouncyCastle.Crypto.AsymmetricKeyParameter keyparameter = Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(x509Cert.PrivateKey).Private; Org.BouncyCastle.Cms.CmsSignedDataGenerator generator = new Org.BouncyCastle.Cms.CmsSignedDataGenerator(); generator.addsigner(keyparameter, cert, Org.BouncyCastle.Cms.CmsSignedDataGenerator.EncryptionRsa, Org.BouncyCastle.Cms.CmsSignedDataGenerator.DigestSha1); ArrayList certlist = new ArrayList(); certlist.add(cert); Strona 8

Org.BouncyCastle.X509.Store.X509CollectionStoreParameters storeparameters = new Org.BouncyCastle.X509.Store.X509CollectionStoreParameters(certList); Org.BouncyCastle.X509.Store.IX509Store store = Org.BouncyCastle.X509.Store.X509StoreFactory.Create("CERTIFICATE/COLLECTION", storeparameters); generator.addcertificates(store); Org.BouncyCastle.Cms.CmsSignedData signeddata = generator.generate("1.2.840.113549.1.7.1", new Org.BouncyCastle.Cms.CmsProcessableByteArray(dataToSign), false); } return signeddata.getencoded(); Zwracana tablica bajtów jest podpisem odłączonym (detached), który należy zamieścić w komunikacie ESDK. Strona 9

5. Funkcje API - formaty komunikatów 5.1. DeleteAllMessages Wiadomość DeleteAllMessages jest żądaniem usunięcia wszystkich komunikatów odbiorczych dla danej jednostki organizacyjnej. Parametry wejściowe: brak Odpowiedź: DeleteAllMessagesResult: true operacja zakończyła się powodzeniem; false błąd. Request <DeleteAllMessages xmlns="https://esdi.kdpw.pl /API/EsdiService" /> Response <DeleteAllMessagesResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <DeleteAllMessagesResult>boolean</DeleteAllMessagesResult> </DeleteAllMessagesResponse> 5.2. DeleteAllFirstMessages Wiadomość DeleteAllFirstMessages jest żądaniem usunięcia komunikatów odbiorczych dla danej jednostki organizacyjnej do daty przekazanej w parametrze wejściowym. Parametry wejściowe: datetime data do której będą usunięte komunikaty; Odpowiedź: DeleteAllFirstMessagesResult: Strona 10

true operacja zakończyła się powodzeniem; false błąd. Request <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <DeleteAllFirstMessages xmlns="https://esdi.kdpw.pl/api/esdiservice"> <datetime>datetime</datetime> </DeleteAllFirstMessages> </soap:body> </soap:envelope> Response <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <DeleteAllFirstMessagesResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <DeleteAllFirstMessagesResult>boolean</DeleteAllFirstMessagesResult> </DeleteAllFirstMessagesResponse> </soap:body> </soap:envelope> 5.3. DeleteMessage Wiadomość DeleteMessage jest żądaniem usunięcia komunikatu odbiorczego dla danej jednostki organizacyjnej o podanym ID. Parametry wejściowe: Id numer identyfikacyjny komunikatu; Odpowiedź: DeleteMessageResult: true operacja zakończyła się powodzeniem; false błąd. Request <DeleteMessage xmlns="https://esdi.kdpw.pl/api/esdiservice"> <id>int</id> </DeleteMessage> Strona 11

Response <DeleteMessageResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <DeleteMessageResult>boolean</DeleteMessageResult> </DeleteMessageResponse> 5.4. GetAllFirstMessages Wiadomość GetAllFirstMessages jest żądaniem pobrania komunikatów odbiorczych danej jednostki organizacyjnej. Parametr wejściowy określa maksymalną ilość komunikatów zwróconych w odpowiedzi (komunikaty będą zwracane od najstarszego). Parametry wejściowe: count maksymalna ilość komunikatów zwróconych w odpowiedzi; Odpowiedź: MessageID id komunikatu; FileName nazwa pliku; FileData dane pliku w formacie podpisanego komunikatu ESDK; CreateDate data i czas utworzenia komunikatu. Request <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <GetAllFirstMessages xmlns="https://esdi.kdpw.pl/api/esdiservice"> <count>int</count> </GetAllFirstMessages> </soap:body> </soap:envelope> Response <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <GetAllFirstMessagesResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <GetAllFirstMessagesResult> <Message> Strona 12

<MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> <Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> </GetAllFirstMessagesResult> </GetAllFirstMessagesResponse> </soap:body> </soap:envelope> 5.5. GetAllMessages Wiadomość GetAllMessages jest żądaniem pobrania wszystkich komunikatów odbiorczych danej jednostki organizacyjnej. Parametry wejściowe: brak; Odpowiedź: MessageID id komunikatu; FileName nazwa pliku; FileData dane pliku w formacie podpisanego komunikatu ESDK; CreateDate data i czas utworzenia komunikatu. Request <GetAllMessages xmlns="https://esdi.kdpw.pl/api/esdiservice" /> Response <GetAllMessagesResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <GetAllMessagesResult> <Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> Strona 13

<Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> </GetAllMessagesResult> </GetAllMessagesResponse> 5.6. GetEnvironments Wiadomość GetEnvironments jest żądaniem zwrócenia dostępnych środowisk dla danej jednostki organizacyjnej. Parametry wejściowe: brak; Odpowiedź: string kod środowiska. Request <GetEnvironments xmlns="https://esdi.kdpw.pl/api/esdiservice" /> Response <GetEnvironmentsResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <GetEnvironmentsResult> <string>string</string> <string>string</string> </GetEnvironmentsResult> </GetEnvironmentsResponse> 5.7. GetFirstMessages Wiadomość GetFirstMessages jest żądaniem pobrania komunikatów odbiorczych danej jednostki organizacyjnej, utworzonych po określonej dacie. Parametry wejściowe określają Strona 14

maksymalną ilość komunikatów zwróconych w odpowiedzi (komunikaty będą zwracane od najstarszego) oraz datę od której maja być pobierane komunikaty Parametry wejściowe: count maksymalna ilość komunikatów zwróconych w odpowiedzi; datetime data od której będą pobrane komunikaty; Odpowiedź: MessageID id komunikatu; FileName nazwa pliku; FileData dane pliku w formacie podpisanego komunikatu ESDK; CreateDate data i czas utworzenia komunikatu. Request <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <GetFirstMessages xmlns="https://esdi.kdpw.pl/api/esdiservice"> <count>int</count> <datetime>datetime</datetime> </GetFirstMessages> </soap:body> </soap:envelope> Response <soap:envelope xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:body> <GetFirstMessagesResponse xmlns="https://esditst.kdpw.pl/api/esdiservice"> <GetFirstMessagesResult> <Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> <Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> </GetFirstMessagesResult> </GetFirstMessagesResponse> </soap:body> </soap:envelope> 5.8. GetMessages Strona 15

Wiadomość GetMessages jest żądaniem pobrania wszystkich komunikatów odbiorczych danej jednostki organizacyjnej, utworzonych po określonej dacie. Parametry wejściowe: datetime data od której będą pobrane komunikaty; Odpowiedź: MessageID id komunikatu; FileName nazwa pliku; FileData dane pliku w formacie podpisanego komunikatu ESDK; CreateDate data i czas utworzenia komunikatu. Request <GetMessages xmlns="https://esdi.kdpw.pl/api/esdiservice"> <datetime>datetime</datetime> </GetMessages> Response <GetMessagesResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <GetMessagesResult> <Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> <Message> <MessageID>int</MessageID> <FileName>string</FileName> <FileData>base64Binary</FileData> <CreateDate>dateTime</CreateDate> </Message> </GetMessagesResult> </GetMessagesResponse> 5.9. SendMessage Wiadomość SendMessage wysyła plik z podpisanym komunikatem ESDK. Strona 16

Parametry wejściowe: file dane pliku w formacie podpisanego komunikatu ESDK; filename nazwa pliku; Odpowiedź: SendMessageResult ID przyjętego komunikatu nadane przez system ESDI WebService. Request <SendMessage xmlns="https://esdi.kdpw.pl/api/esdiservice"> <file>base64binary</file> <filename>string</filename> </SendMessage> Response <SendMessageResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <SendMessageResult>int</SendMessageResult> </SendMessageResponse> 5.10. VerifyReceiveMessage Wiadomość VerifyReceiveMessage jest żądaniem weryfikacji podpisu odebranego komunikatu ESDK. Parametry wejściowe: id numer identyfikacyjny komunikatu zwróconego metodą GetMessages, GetFirstMessages, GetAllFirstMessages lub GetAllMessages; Odpowiedź: MessageID ID komunikatu; FileName nazwa pliku; Status status weryfikacji: SGN_OK weryfikacja pozytywna; SGN_NOT_VER weryfikacja negatywna; VerifyFailCode w przypadku weryfikacji negatywnej - kod błędu; Strona 17

VerifyFailReason w przypadku weryfikacji negatywnej - opis błędu; SignedBy w przypadku weryfikacji pozytywnej - informacje o podpisie. Request <VerifyReceiveMessage xmlns="https://esdi.kdpw.pl/api/esdiservice"> <id>int</id> </VerifyReceiveMessage> Response <VerifyReceiveMessageResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <VerifyReceiveMessageResult> <MessageID>int</MessageID> <FileName>string</FileName> <Status>string</Status> <VerifyFailCode>string</VerifyFailCode> <VerifyFailReason>string</VerifyFailReason> <SignedBy>string</SignedBy> </VerifyReceiveMessageResult> </VerifyReceiveMessageResponse> 5.11. VerifySendMessage Wiadomość VerifySendMessage jest żądaniem weryfikacji podpisu dostarczonego komunikatu ESDK. Parametry wejściowe: id numer identyfikacyjny komunikatu zwróconego metodą SendMessage; Odpowiedź: MessageID ID komunikatu; FileName nazwa pliku; Status status weryfikacji: SGN_OK weryfikacja pozytywna; SGN_NOT_VER weryfikacja negatywna; VerifyFailCode w przypadku weryfikacji negatywnej - kod błędu; VerifyFailReason w przypadku weryfikacji negatywnej - opis błędu; SignedBy w przypadku weryfikacji pozytywnej - informacje o podpisie. Strona 18

Request xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <VerifySendMessage xmlns="https://esdi.kdpw.pl/api/esdiservice"> <id>int</id> </VerifySendMessage> Response xmlns:xsd="http://www.w3.org/2001/xmlschema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <VerifySendMessageResponse xmlns="https://esdi.kdpw.pl/api/esdiservice"> <VerifySendMessageResult> <MessageID>int</MessageID> <FileName>string</FileName> <Status>string</Status> <VerifyFailCode>string</VerifyFailCode> <VerifyFailReason>string</VerifyFailReason> <SignedBy>string</SignedBy> </VerifySendMessageResult> </VerifySendMessageResponse> Strona 19

6. Przykłady wywołania usług za pomocą klienta.net Środowisko Visual Studio dysponuje zaawansowanym kreatorem aplikacji, który pozwala zaimportować asmx i wygenerować na jego podstawie klasy, niezbędne do przygotowania komunikatów i wywołania usługi ESDI WebService. Kreator dostępny jest w menu Project Add Service Reference. Następnie wybieramy Advanced Add Web Reference. W wyświetlonym oknie dialogowym w polu URL należy wpisać adres usługi ESDI WebService. Dla środowiska produkcyjnego https://esdi.kdpw.pl/api/esdiservice.asmx dla środowiska testowego https://esditst.kdpw.pl/api/esdiservice.asmx i wcisnąć przycisk GO. Po wybraniu certyfikatu, którym połączymy się do usługi, możemy dodać referencje. Rys. 1 Strona 20

Po zatwierdzeniu okna dialogowego przyciskiem Add Reference, kreator Visual Studio wygeneruje szereg klas, które odpowiadają m. in. poszczególnym komunikatom usługi ESDI WebService. Strukturę klas można przejrzeć za pomocą przeglądarki Object Browser: Rys. 2 Konfiguracja połączenia do usługi ESDI WebService została zapisana w pliku konfiguracyjnym app.config wewnątrz znacznika applicationsettings: <applicationsettings> <TestWebService.Properties.Settings> <setting name="testwebservice_pl_kdpw_esditst_esdiservice" serializeas="string"> <value>https://esditst.kdpw.pl/api/esdiservice.asmx</value> </setting> </TestWebService.Properties.Settings> </applicationsettings> Wywołanie przykładowej usługi: poniższy przykład demonstruje wywołanie metody GetMessages(DateTime) zwracającej wiadomości utworzone po wskazanej dacie. W celu ustanowienia połączenia z usługą ESDI WebService należy do obiektu utworzonej usługi dodać certyfikat klienta. Certyfikat z pliku p12 można zainstalować w magazynie certyfikatów Windows w celu jego późniejszego przekazania. Przykład przeszukania magazynu certyfikatów użytkownika systemu Windows, sekcji certyfikatów osobistych i pobrania certyfikatu o numerze seryjnym 13B7: Strona 21

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Security.Cryptography.X509Certificates; namespace TestWebService { static class Cert { public static X509Certificate2 GetCertificate() { X509Certificate2 cert = null; X509Store store = new X509Store(StoreLocation.CurrentUser); try { store.open(openflags.openexistingonly); X509Certificate2Collection collection = store.certificates; X509Certificate2Collection findcollection = collection.find(x509findtype.findbyserialnumber, "13B7", true); if (findcollection.count == 1) cert = findcollection[0]; return cert; } finally { store.close(); } } } } Tak pobrany certyfikat można przekazać do klasy EsdiService reprezentującej referencje do usługi ESDI WebService: using System; using System.Collections.Generic; using System.Linq; using System.Text; using TestWebService.pl.kdpw.esditst; using System.Security.Cryptography.X509Certificates; namespace TestWebService { class TestService { static X509Certificate2 cert = Cert.GetCertificate(); static EsdiService esdiservice = new EsdiService(); } } public static Message[] GetMessages(DateTime datetime) { esdiservice.clientcertificates.add(cert); Message[] messages = esdiservice.getmessages(datetime); return messages; } Metoda GetMessages klasy TestService zwraca tablicę typów Message z przestrzeni nazw TestWebService.pl.kdpw.esditst. Tak zwróconą tablicę można przeszukiwać i odczytywać pola poszczególnych obiektów: for(int i = 0; i < messages.length; i++) { Message message = messages[i]; DateTime createdate = message.createdate; Strona 22

} byte[] filedata = message.filedata; string filename = message.filename; int messageid = message.messageid; Strona 23